欢迎来到天天文库
浏览记录
ID:57985824
大小:27.43 KB
页数:8页
时间:2020-04-05
《算法分析与设计(李清勇)——分治.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、4-1整数分解问题#include#include#defineN100intfenjie(intn);voidmain(){intn;intcount;printf("inputanumber");do{scanf("%d",&n);}while(n<0);count=fenjie(n);printf("%d",count);}intfenjie(intn){inti;intk=0;inttemp=0;inta[N];for(i=2;i2、++;}}for(i=0;i #include void suanfa(); void zdlch(int b); void surt(int k); int N;//全局变量 油井数 int s[100];//n个油井y轴坐标 int sumin;//输油管道最小长度void main() 3、{ int i; sumin=0; scanf("%d",&N); for(i=0;i4、是b调用suanfa(b)函数求出路程 { int j=0,b,l,m; int a=N; int i; while(j!=k) { b=s[0]; for(i=0;i=b) { b=s[i]; l=i; }} m=s[l];s[l]=s[a-1];s[a-1]=m;a--;j++; } zdlch(b); } Void zdlch(int b) //求最小长度的总和 5、 { int i; for(i=0;i#include #include #include #include using namespace std;int f[505];//后500位数void mul(int a)//乘以a{ int i,j,k,temp=0; for(i=0;i<500;i++)6、{ temp=temp+f[i]*a; f[i]=temp%10; temp=temp/10; }}void sub(int x)//减x{ f[0]-=x; int k=0; while(k<500&&f[k]<0){ f[k]=f[k]+10; f[k+1]--; k++; }}int main(){ int n; while(scanf("%d",&n)!=EOF){ int i,j,k; 7、 memset(f,0,sizeof(f)); f[0]=1; //这里是分成2^10一段,那样就可以将乘法次数减少1/10 //若还想更快,可以再分大点,比如2^20这样,不过最好不要超过int for(i=0;i8、(10)+1)); //输出 for(i=0,k=499;i<10;i++) { for(j=0;j<50;j++){
2、++;}}for(i=0;i #include void suanfa(); void zdlch(int b); void surt(int k); int N;//全局变量 油井数 int s[100];//n个油井y轴坐标 int sumin;//输油管道最小长度void main()
3、{ int i; sumin=0; scanf("%d",&N); for(i=0;i4、是b调用suanfa(b)函数求出路程 { int j=0,b,l,m; int a=N; int i; while(j!=k) { b=s[0]; for(i=0;i=b) { b=s[i]; l=i; }} m=s[l];s[l]=s[a-1];s[a-1]=m;a--;j++; } zdlch(b); } Void zdlch(int b) //求最小长度的总和 5、 { int i; for(i=0;i#include #include #include #include using namespace std;int f[505];//后500位数void mul(int a)//乘以a{ int i,j,k,temp=0; for(i=0;i<500;i++)6、{ temp=temp+f[i]*a; f[i]=temp%10; temp=temp/10; }}void sub(int x)//减x{ f[0]-=x; int k=0; while(k<500&&f[k]<0){ f[k]=f[k]+10; f[k+1]--; k++; }}int main(){ int n; while(scanf("%d",&n)!=EOF){ int i,j,k; 7、 memset(f,0,sizeof(f)); f[0]=1; //这里是分成2^10一段,那样就可以将乘法次数减少1/10 //若还想更快,可以再分大点,比如2^20这样,不过最好不要超过int for(i=0;i8、(10)+1)); //输出 for(i=0,k=499;i<10;i++) { for(j=0;j<50;j++){
4、是b调用suanfa(b)函数求出路程 { int j=0,b,l,m; int a=N; int i; while(j!=k) { b=s[0]; for(i=0;i=b) { b=s[i]; l=i; }} m=s[l];s[l]=s[a-1];s[a-1]=m;a--;j++; } zdlch(b); } Void zdlch(int b) //求最小长度的总和
5、 { int i; for(i=0;i#include #include #include #include using namespace std;int f[505];//后500位数void mul(int a)//乘以a{ int i,j,k,temp=0; for(i=0;i<500;i++)
6、{ temp=temp+f[i]*a; f[i]=temp%10; temp=temp/10; }}void sub(int x)//减x{ f[0]-=x; int k=0; while(k<500&&f[k]<0){ f[k]=f[k]+10; f[k+1]--; k++; }}int main(){ int n; while(scanf("%d",&n)!=EOF){ int i,j,k;
7、 memset(f,0,sizeof(f)); f[0]=1; //这里是分成2^10一段,那样就可以将乘法次数减少1/10 //若还想更快,可以再分大点,比如2^20这样,不过最好不要超过int for(i=0;i8、(10)+1)); //输出 for(i=0,k=499;i<10;i++) { for(j=0;j<50;j++){
8、(10)+1)); //输出 for(i=0,k=499;i<10;i++) { for(j=0;j<50;j++){
此文档下载收益归作者所有