//自己看到这个问题后的解法#include<iostream> using namespace std; typedef int status; //将一个数组p的坐标0到i的元素调个头 status diao_tou(int *p,int i) { if(i==0) return 1; for(int j=0;j<=((i-1)/2);j++) { int temp; temp=p[i-j]; p[i-j]=p[j]; p[j]=temp; } return 1; } int main() { //输入1到n个不同的数,从前到后依次为从上到下的各个饼的大小,不同的. int max_size; cin>>max_size;//输入的数字为max_size个 int *ptr,i=0; ptr=(int *)malloc(max_size*sizeof(int));//将这些数字都存放在数组中 while (1) { cin>>ptr[i]; i++; if(i==max_size) break; } for(int i=0;i<max_size;++i) cout<<ptr[i]<<‘ ‘; cout<<endl; int cout_time=0;//记次数的变量 for(int k=max_size-1;k!=0;--k) { if(ptr[k]==k) continue; if(ptr[0]==k) { diao_tou(ptr,k); cout_time++; } else { for(int j=1;j!=k;j++) if(ptr[j]==k) { diao_tou(ptr,j); diao_tou(ptr,k); cout_time++; cout_time++; } } } cout<<"cout_time="<<cout_time<<endl; system("pause"); return 1; }
时间: 2024-10-15 23:36:18