设计蛮力算法 找出这四样东西的价格各是多少? 该算法为: int $7.11(float a[],float b[],float c[],float d[],int n) { for(int i=0;i!=n;++i) for(int j=0;j!=n;++j) for(int k=0;k!=n;++k) for(int m=0;m!=n;++m) { if((a[i]+b[j]+c[k]+d[m])==7.11 && a [i]*b[j]*c[k]*d[m]==7.11) cout< using namespace std; extern const int n=6;//声明 int main() { int a[n]={0,6,1,2,3,5};//初始化 int mid=n; int num_max1=0,num_max2=0; for(int i=0;i<=n;++i)//前半部分 { if(a[i]>num_max1) num_max1=a[i]; } for(int j=n+1;jnum_max2) num_max2=a[j]; } if(num_max1>=num_max2) cout<<"数组中的最大元素: "< using namespace std; void LeftReverse(char *a, int begin, int end) { for(int i=0;i<(end-begin+1)/2;i++)//交换移动 { int temp=a[begin+i]; a[begin+i]=a[end-i]; a[end-i]=temp; } } void Converse(char *a,int n,int k) { LeftReverse(a, 0, k+1); LeftReverse(a, k, n+1); LeftReverse(a, 0, n-1); for(int i=0;i using namespace std; int data[100]; //在 m 个数中输出 n 个排列数(n<=m) void DPpl(int num,int m,int n,int depth) { if(depth==n) { for(int i=0;i using namespace std; void Findnum(int *a,int n) { int low=0; int high=n-1; while(low<=high) { int mid=(low+high)/2; if(a[mid]==mid) { cout<<"这个数是: "<mid) high=mid-1; else low=mid+1; } } int main() { int a[7]={1,0,2,5,6,7,9}; Findnum(a,7); return 0; } 时间复杂度为 O(log2n)。 10. 在一个序列中出现次数最多的元素称为众数。请设计算法寻找众数并分析算法的时 间复杂性。 //先对序列进行快速排序 //再进行一次遍历 //输出众数的重复次数 #include using namespace std; int partions(int b[],int low,int high) { int prvotkey=b[low]; b[0]=b[low]; while (low=prvotkey) --high; b[low]=b[high]; while (lowmax) { max=count; count=0; } }//while cout<<"重复次数:"< using namespace std; const int n=8; void partions(int a[],int low,int high) { //进行一趟快排 int prvotkey=a[low]; a[0]=a[low]; while (low=prvotkey) ++low; a[high]=a[low]; } a[low]=prvotkey; //如果 s1(大的数集)的的个数大于 n/2 if(low>=n/2) { for(int i=0;i<=n/2-low-1;++i) { for(int j=0;ja[k-1]) { int temp1=a[k]; a[k]=a[k-1]; a[k-1]=temp1; } }//for } } int main() { int a[n]={1,3,5,9,6,0,-11,-8}; partions(a,0,n-1); for(int i=0;iaj,则序偶(ai, aj)称为 该排列的一个逆序。例如,2, 3, 1 有两个逆序:(3, 1)和(2, 1)。