随机排列生成算法 (运行a.exe输出数字的个数,运行a.exe test时输出为一次随机的排列)
随机排列生成算法 (运行a.exe输出数字的个数,运行a.exe test时输出为一次随机的排列)
The input will be a list of integers
The number of the integers
1 #include<iostream> 2 #include<cstdlib> 3 #include<ctime> 4 using namespace std; 5 int seed=time(0); 6 int b[50]={0}; 7 int test(int b[],int i,int temp) 8 { 9 for (int j=0;j<i;j++) 10 { 11 if (b[j]==temp) return -1; 12 } 13 return 0; 14 } 15 void give_test(int b[],int temp,int i,int n) 16 { 17 seed++; 18 srand(seed); 19 temp=rand()%n; 20 if (test(b,i,temp)==-1) 21 { 22 seed++; 23 give_test(b,temp,i,n); 24 } 25 else b[i]=temp; 26 } 27 void random_permute(int a[],int n) 28 { 29 srand(seed); 30 b[0]=rand()%n; 31 int temp=0; 32 for (int i=1;i<n;i++) 33 { 34 give_test(b,temp,i,n); 35 } 36 for (int i=0;i<n;i++) 37 cout<<a[b[i]]<<" "; 38 } 39 int main(int argc,char *argv[]) 40 { 41 int n; 42 cin>>n; 43 int a[50]; 44 for (int i=0;i<n;i++) 45 cin>>a[i]; 46 random_permute(a,n); 47 cout<<n<<endl; 48 return 0; 49 }
验证可行
—>修改符合oj设计(argc,argv……受不了了,先睡……改天再说)
oj 1031 random permutation,布布扣,bubuko.com
原文:http://www.cnblogs.com/giddens/p/3704745.html