欢迎来到天天文库
浏览记录
ID:11833196
大小:491.50 KB
页数:15页
时间:2018-07-14
《算法试题代码实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、小学手算的程序实现C++#includeusingnamespacestd;#defineN10intmain(){inti,j,set=0;chark[N];inta[N],b[N],c[2*N];for(i=0;i2、求余运算,正整数对n求余的范围//肯定是在0~n-1之间,//也就是rand()%(b-a)的范围是0~b-a-1,然后加上a,也就是范围变成了a~b-1。//而rand()%90+10=rand()%(100-10)+10,自己算算看吧。cout<<"整数A:";for(i=N-1;i>=0;i--)cin>>a[i];cout<=0;i--)cin>>b[i];cout<3、0;j=0;i--)cout<#include#includeusingnamespacestd;intn,x,y,result;//全局变量voidinput(){cout<<"两个乘数的位数是n,请输4、入n的值(n是2的整数次幂):";cin>>n;cout<>x;cout<<"y=";cin>>y;}intcalculate(inta,intb)//计算数值函数--循环体{inttemp1,temp2;longs;intx1,x0,y1,y0;if(n>1)//可以分治算法的条件{temp1=(int)pow(10,n/2);temp2=(int)pow(10,n);x1=a/temp1;//x值的前半部分x0=a-x1*temp1;//x值的后半部分y1=b/temp1;//y值的前半5、部分y0=b-y1*temp1;//y值的后半部分n=n/2;//经过一次分治后,数的位数减半s=calculate(x1,y1)*temp2+(calculate(x1+x0,y1+y0)-calculate(x1,y1)-calculate(x0,y0))*temp1+calculate(x0,y0); }elsereturna*b;returns;}voidprint()//输出函数{cout<<"乘数x="<6、o{system("cls");//清屏函数input();result=calculate(x,y);print();cout<<"是否继续?(y/n)"<>c;}while(c=='y'7、8、'c'=='Y');}最大子段和蛮力法:include#include#defineN7inta[N]={-2,11,-4,13,-5,-2,8};//用蛮力法求最大子段和intManLiFa(int*a,intn){intbesti=-1;intbestj=-1;intsum=0;for(inti=1;i<=n;i++){9、intthissum=0;for(intj=i;j<=n;j++){thissum+=a[j];if(thissum>sum){ sum=thissum;besti=i;bestj=j;} }}printf("起点="+besti);printf("终点="+bestj);returnsum;}intmain(){printf("蛮力法最大子段和:%d",ManLiFa(a,N));return0; }最大子段和分治法:#include#include#include
2、求余运算,正整数对n求余的范围//肯定是在0~n-1之间,//也就是rand()%(b-a)的范围是0~b-a-1,然后加上a,也就是范围变成了a~b-1。//而rand()%90+10=rand()%(100-10)+10,自己算算看吧。cout<<"整数A:";for(i=N-1;i>=0;i--)cin>>a[i];cout<=0;i--)cin>>b[i];cout<3、0;j=0;i--)cout<#include#includeusingnamespacestd;intn,x,y,result;//全局变量voidinput(){cout<<"两个乘数的位数是n,请输4、入n的值(n是2的整数次幂):";cin>>n;cout<>x;cout<<"y=";cin>>y;}intcalculate(inta,intb)//计算数值函数--循环体{inttemp1,temp2;longs;intx1,x0,y1,y0;if(n>1)//可以分治算法的条件{temp1=(int)pow(10,n/2);temp2=(int)pow(10,n);x1=a/temp1;//x值的前半部分x0=a-x1*temp1;//x值的后半部分y1=b/temp1;//y值的前半5、部分y0=b-y1*temp1;//y值的后半部分n=n/2;//经过一次分治后,数的位数减半s=calculate(x1,y1)*temp2+(calculate(x1+x0,y1+y0)-calculate(x1,y1)-calculate(x0,y0))*temp1+calculate(x0,y0); }elsereturna*b;returns;}voidprint()//输出函数{cout<<"乘数x="<6、o{system("cls");//清屏函数input();result=calculate(x,y);print();cout<<"是否继续?(y/n)"<>c;}while(c=='y'7、8、'c'=='Y');}最大子段和蛮力法:include#include#defineN7inta[N]={-2,11,-4,13,-5,-2,8};//用蛮力法求最大子段和intManLiFa(int*a,intn){intbesti=-1;intbestj=-1;intsum=0;for(inti=1;i<=n;i++){9、intthissum=0;for(intj=i;j<=n;j++){thissum+=a[j];if(thissum>sum){ sum=thissum;besti=i;bestj=j;} }}printf("起点="+besti);printf("终点="+bestj);returnsum;}intmain(){printf("蛮力法最大子段和:%d",ManLiFa(a,N));return0; }最大子段和分治法:#include#include#include
3、0;j=0;i--)cout<#include#includeusingnamespacestd;intn,x,y,result;//全局变量voidinput(){cout<<"两个乘数的位数是n,请输
4、入n的值(n是2的整数次幂):";cin>>n;cout<>x;cout<<"y=";cin>>y;}intcalculate(inta,intb)//计算数值函数--循环体{inttemp1,temp2;longs;intx1,x0,y1,y0;if(n>1)//可以分治算法的条件{temp1=(int)pow(10,n/2);temp2=(int)pow(10,n);x1=a/temp1;//x值的前半部分x0=a-x1*temp1;//x值的后半部分y1=b/temp1;//y值的前半
5、部分y0=b-y1*temp1;//y值的后半部分n=n/2;//经过一次分治后,数的位数减半s=calculate(x1,y1)*temp2+(calculate(x1+x0,y1+y0)-calculate(x1,y1)-calculate(x0,y0))*temp1+calculate(x0,y0); }elsereturna*b;returns;}voidprint()//输出函数{cout<<"乘数x="<6、o{system("cls");//清屏函数input();result=calculate(x,y);print();cout<<"是否继续?(y/n)"<>c;}while(c=='y'7、8、'c'=='Y');}最大子段和蛮力法:include#include#defineN7inta[N]={-2,11,-4,13,-5,-2,8};//用蛮力法求最大子段和intManLiFa(int*a,intn){intbesti=-1;intbestj=-1;intsum=0;for(inti=1;i<=n;i++){9、intthissum=0;for(intj=i;j<=n;j++){thissum+=a[j];if(thissum>sum){ sum=thissum;besti=i;bestj=j;} }}printf("起点="+besti);printf("终点="+bestj);returnsum;}intmain(){printf("蛮力法最大子段和:%d",ManLiFa(a,N));return0; }最大子段和分治法:#include#include#include
6、o{system("cls");//清屏函数input();result=calculate(x,y);print();cout<<"是否继续?(y/n)"<>c;}while(c=='y'
7、
8、'c'=='Y');}最大子段和蛮力法:include#include#defineN7inta[N]={-2,11,-4,13,-5,-2,8};//用蛮力法求最大子段和intManLiFa(int*a,intn){intbesti=-1;intbestj=-1;intsum=0;for(inti=1;i<=n;i++){
9、intthissum=0;for(intj=i;j<=n;j++){thissum+=a[j];if(thissum>sum){ sum=thissum;besti=i;bestj=j;} }}printf("起点="+besti);printf("终点="+bestj);returnsum;}intmain(){printf("蛮力法最大子段和:%d",ManLiFa(a,N));return0; }最大子段和分治法:#include#include#include
此文档下载收益归作者所有