您的位置:首页 > 编程语言

小代码 整理的代码

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  小代码