欢迎来到天天文库
浏览记录
ID:51712956
大小:40.42 KB
页数:10页
时间:2020-03-15
《算法作业整理(自己代码).docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include#include#includeusingnamespacestd;intmain(){ intn,i,x[10001],y[10001]; intx_sum,y_sum; while(cin>>n) { for(i=0;i>x[i]>>y[i]; sort(x,x+n); sort(y,y+n); for(i=0;i2、 { x_sum+=abs(x[i]-x[n/2]); y_sum+=abs(y[i]-y[n/2]); } cout<<(x_sum+y_sum)<usingnamespacestd;intmain() { //两个数组 intlen=0; //获取数组的长度 cin>>len; //动态分配数组 int*a; int*b; a=(int*)malloc(sizeof(int)*len); b=(int*)malloc(sizeof(in3、t)*len); //获取每个数组的元素 for(inti=0;i>a[i]; } for(intj=0;j>b[j]; } //两个数组的左右端点的坐标 intaLeft=0; intaRight=len-1; intbLeft=0; intbRight=len-1; //两数组中间坐标 intaMid=0; intbMid=0; //迭代循环 while(true) { //printf("aleftis%drightis%d,and4、bleftis%drightis%d.",aLeft,aRight,bLeft,bRight); // 如果两个数组都只剩下两个元素,则中位数一定在其中 if((aRight-aLeft)==1&&(bRight-bLeft)==1) { cout<<((a[aLeft]>=b[bLeft])?a[aLeft]:b[bLeft])<<""<<((a[aRight]<=b[bRight])?a[aRight]:b[bRight])<5、 求解各个数组的中值 aMid=(int)((aLeft+aRight)/2); bMid=(int)((bLeft+bRight)/2); // 如果A中值小于B中值 if(a[aMid]6、 bRight=bMid; } } // 如果B中值小于A中值 else { // 如果A中现存的数列是偶数个,右边值加一 if((aLeft+aRight+1)%2==0){ aRight=aMid+1; bLeft=bMid; } else{ aRight=aMid; bLeft=bMid; } } } } return0; } 7、//中位数问题O(logn)时间#include#includeusingnamespacestd;intmax(inta,intb){ if(a>=b) returna; else returnb;}intmain(){ int**a; int**b; intn=0; cin>>n; a=(int**
2、 { x_sum+=abs(x[i]-x[n/2]); y_sum+=abs(y[i]-y[n/2]); } cout<<(x_sum+y_sum)<usingnamespacestd;intmain() { //两个数组 intlen=0; //获取数组的长度 cin>>len; //动态分配数组 int*a; int*b; a=(int*)malloc(sizeof(int)*len); b=(int*)malloc(sizeof(in
3、t)*len); //获取每个数组的元素 for(inti=0;i>a[i]; } for(intj=0;j>b[j]; } //两个数组的左右端点的坐标 intaLeft=0; intaRight=len-1; intbLeft=0; intbRight=len-1; //两数组中间坐标 intaMid=0; intbMid=0; //迭代循环 while(true) { //printf("aleftis%drightis%d,and
4、bleftis%drightis%d.",aLeft,aRight,bLeft,bRight); // 如果两个数组都只剩下两个元素,则中位数一定在其中 if((aRight-aLeft)==1&&(bRight-bLeft)==1) { cout<<((a[aLeft]>=b[bLeft])?a[aLeft]:b[bLeft])<<""<<((a[aRight]<=b[bRight])?a[aRight]:b[bRight])<5、 求解各个数组的中值 aMid=(int)((aLeft+aRight)/2); bMid=(int)((bLeft+bRight)/2); // 如果A中值小于B中值 if(a[aMid]6、 bRight=bMid; } } // 如果B中值小于A中值 else { // 如果A中现存的数列是偶数个,右边值加一 if((aLeft+aRight+1)%2==0){ aRight=aMid+1; bLeft=bMid; } else{ aRight=aMid; bLeft=bMid; } } } } return0; } 7、//中位数问题O(logn)时间#include#includeusingnamespacestd;intmax(inta,intb){ if(a>=b) returna; else returnb;}intmain(){ int**a; int**b; intn=0; cin>>n; a=(int**
5、 求解各个数组的中值 aMid=(int)((aLeft+aRight)/2); bMid=(int)((bLeft+bRight)/2); // 如果A中值小于B中值 if(a[aMid]
6、 bRight=bMid; } } // 如果B中值小于A中值 else { // 如果A中现存的数列是偶数个,右边值加一 if((aLeft+aRight+1)%2==0){ aRight=aMid+1; bLeft=bMid; } else{ aRight=aMid; bLeft=bMid; } } } } return0; }
7、//中位数问题O(logn)时间#include#includeusingnamespacestd;intmax(inta,intb){ if(a>=b) returna; else returnb;}intmain(){ int**a; int**b; intn=0; cin>>n; a=(int**
此文档下载收益归作者所有