小代码 整理的代码
2016-04-30 11:39
501 查看
/************ http://www.anycodes.cn/zh/ by wz 5/1/2016 交换两个数值 1+2=3 1+2+3+...++N http://blog.csdn.net/liuqiyao_01/article/details/39292999/ Atoi(); ************/ #include <stdio.h> #define L sum+=(++n); #define K L;L;L;L;L;L;L;L;L;L; #define J K;K;K;K;K;K;K;K;K;K; #define H J;J;J;J;J;J;J;J;J;J; //for SumN1 #include <iostream> using namespace std; void myswap(int x,int y) { cout<<"myswap:"<<endl<<"\t\t x="<<x<<",y="<<y; x^=y^=x^=y; cout<<"then,x="<<x<<",y="<<y<<endl; } void myadd(int x,int y) { cout<<"myadd:"<<endl<<"\t\t"<<"x="<<x<<",y="<<y; int sum,carry; do { sum=x^y; carry=(x&y)<<1; x=sum; y=carry; } while (y!=0);//y //cout<<x; //x return cout<<",x+y="<<x<<endl; } //约瑟夫环是一个映射序列问题 //总结规律后的代码简约 void ysf_last_one(unsigned int n,unsigned int m) { int last = 0; //if(n<1 || m<1) return -1; for(int i=2;i<=n;i++) last=(last+m)%i; //return last; cout<<"ysf_last_one:"<<endl<<"\t\t"<<"约瑟夫环问题,"<<n<<"个人,"<<"数"<<m<<"的人出环,最后剩下的是第"<<last+1<<"个人"<<endl; } void SumN1() { int sum = 0; int n = 0; H; printf("%d\n", sum); } class Temp { public: Temp(){++N; Sum += N;} static void Reset(){N=0; Sum=0;} static unsigned int GetSum(){return Sum;} private: static unsigned int N; static unsigned int Sum; }; unsigned int Temp::N = 0; unsigned int Temp::Sum = 0; unsigned int Sum_Solution1(unsigned int n) { Temp::Reset(); Temp *a = new Temp ; delete []a; a = NULL; return Temp::GetSum(); } void sumN2() { printf("%d\n", Sum_Solution1(1000)); } using namespace std; class A; A* Array[2]; class A { public: virtual unsigned int Sum(unsigned int n) { return 0; } }; class B:public A { public: virtual unsigned int Sum(unsigned int n) { return Array[!!n]->Sum(n-1) + n; } }; int Sum_Solutiion2(int n) { A a; B b; Array[0] = &a; Array[1] = &b; int value = Array[1]->Sum(n); return value; } void SumN3() { printf("%d\n", Sum_Solutiion2(1000)); } typedef unsigned int (*fun)(unsigned int); unsigned int Sum_Solutiion3_Teminator(unsigned int n) { return 0; } unsigned int Sum_Solutiion3(unsigned int n) { static fun f[2] = {Sum_Solutiion3_Teminator, Sum_Solutiion3}; return n + f[!!n](n-1); } void SumN4() { printf("%d\n", Sum_Solutiion3(1000)); } /* template <unsigned int n>struct Sum_Solutiion4 { enum Value{N = Sum_Solutiion4<N-1>::N + n}; }; template <> struct Sum_Solutiion4<1> { enum Value{N = 1}; }; void SumN5() { printf("%d\n", Sum_Solutiion4<1000>::N); } */ int main(int argc, char *argv[]) { printf("\tHello, world\n"); myswap(0,1); myadd(1,2); ysf_last_one(5,3); cout<<"接下来 5种方法求 1到N的和,模板的待修改"<<endl; SumN4(); SumN3(); sumN2(); SumN1(); return 0; }