140 打印出所有不同的排列 4不能在第三位,3与5不能相连

来源:互联网 发布:热血传奇mac客户端 编辑:程序博客网 时间:2024/05/16 01:55
40、用 1、2、2、3、4、5 这六个数字,写一个 main 函数,打印出所有不同的排列,

如:512234、412345 等,要求:"4"不能在第三位,"3"与"5"不能相连.

/*40、用 1、2、2、3、4、5 这六个数字,写一个 main 函数,打印出所有不同的排列,如:512234、412345 等,要求:"4"不能在第三位,"3"与"5"不能相连.*/ #include<iostream>#include<stdio.h>using namespace std;void swap(char *a,char *b){char t;      t=*a;      *a=*b;      *b=t; }void printAllArray(char a[],int n,int index){int i,j;if(index==n){if(a[2]=='4')return;for(i=0;i<n-1;i++)if(a[i]=='3'&&a[i+1]=='5'||a[i]=='5'&&a[i+1]=='3') return;for(i=0;i<n;i++)printf("%c",a[i]);printf("\n");return ;}for(j=index;j<n;j++){swap(&a[index],&a[j]);printAllArray(a,n,index+1);swap(&a[index],&a[j]);}}int main(){char a[]="122345";int len;//len=sizeof(a)/sizeof(char);//6len=strlen(a);printAllArray(a,len,0);return 0;}
结果有点长:

252341
252314
252431
252413
252143
252134
251342
251324
251432
251423
251243
251234
221345
221543
223145
223154
223415
223451
225431
225413
225143
225134
212345
212543
213245
213254
213425
213452
215432
215423
215243
215234
231245
231254
231425
231452
231542
231524
232145
232154
232415
232451
232541
232514
241325
241523
243125
243152
243215
243251
242315
242513
245231
245213
245123
245132
251342
251324
251432
251423
251243
251234
252341
252314
252431
252413
252143
252134
322145
322154
322415
322451
322541
322514
321245
321254
321425
321452
321542
321524
325142
325124
325412
325421
325241
325214
322145
322154
322415
322451
322541
322514
321245
321254
321425
321452
321542
321524
325142
325124
325412
325421
325241
325214
312245
312254
312425
312452
312542
312524
312245
312254
312425
312452
312542
312524
315242
315224
315422
315422
315242
315224
342125
342152
342215
342251
342521
342512
341225
341252
341225
341252
341522
341522
342125
342152
342215
342251
342521
342512
345122
345122
345212
345221
345221
345212
422315
422513
423215
423251
423125
423152
421325
421523
425132
425123
425213
425231
422315
422513
423215
423251
423125
423152
421325
421523
425132
425123
425213
425231
432215
432251
432125
432152
432512
432521
432215
432251
432125
432152
432512
432521
431225
431252
431225
431252
431522
431522
412325
412523
413225
413252
413225
413252
412325
412523
415232
415223
415223
415232
452312
452321
452132
452123
452213
452231
451322
451322
451232
451223
451223
451232
452312
452321
452132
452123
452213
452231
522341
522314
522431
522413
522143
522134
523241
523214
523421
523412
523142
523124
521342
521324
521432
521423
521243
521234
522341
522314
522431
522413
522143
522134
523241
523214
523421
523412
523142
523124
521342
521324
521432
521423
521243
521234
542321
542312
542231
542213
542123
542132
543221
543212
543221
543212
543122
543122
542321
542312
542231
542213
542123
542132
541322
541322
541232
541223
541223
541232
512342
512324
512432
512423
512243
512234
513242
513224
513422
513422
513242
513224
512342
512324
512432
512423
512243
512234


--------------------------------
Process exited with return value 0
Press any key to continue . . .

0 0