|
#include<iostream.h> #include <conio.h> #include<math.h> void Swap ( int &a ,int & b) { int temp = a; a = b; b = temp; } void Perm(int e[], int k, int m,int b[],int k1,int m1) { if( k1== m1 ) { if(k==m) { int flag,i; for( i=3;i<m-1;i++) { if ((e+e[i+1])==b) {flag=1;continue;}else {flag=0;break;}
; J- a" U% T9 z6 { } if (i==m-1) if((e[1]+e[2])==b[1]) if((e[m-1]+e[m]+e[1])==b[m-1]){ for(int j=1;j<=m;j++) { cout<<e[j]<<" "; } cout<<endl; } } else { for ( int i = k; i <= m; i ++) { Swap( e[k],e );
! o+ ?9 M$ L3 w1 k/ R3 Q8 t: U Perm( e,k + 1, m,b,k1,m1 ) ; Swap( e[k], e ); } } } else { 9 D9 P; I9 Z$ n& t1 l U3 C, m0 [
4 I d! ?$ h% N8 Y/ ^ for ( int j= k1; j<= m1; j ++) { Swap( b[k1],b[j] );
! D0 v9 F3 z- c+ m$ w Perm( e,k , m,b,k1+1,m1 ) ; Swap( b[k1], b[j] ); } }
} void main() { int n,c=-1,d=1,i,j; cout<<"请输入一个大于2的偶数n:\n"; cin>>n; int e[20]; int b[20]; /* e[1]=6; e[2]=-1; e[3]=5; e[4]=-2; e[5]=4; e[6]=-3; e[7]=3; e[8]=-4; e[9]=2; e[10]=-5; e[11]=1; e[12]=-6;*/ for(i=1;i<=n;i++) { e=c*(i+1)/2; c=-c; } * ^; I9 S1 |+ n/ B) G/ ^3 v" u% M) r3 u2 B
for(j=1;j<n;j++) { b[j]=d*(j/2); d=-d; } int m1=n-1; int m=n; int k=1;int k1=1; Perm(e,k,m,b,k1,m1); cout<<endl<<"敲任意键(除回车键)退出..."<<endl; getch();
$ Z4 w, |+ [ G9 `1 ~7 n) u , j6 l- S1 T8 i6 q8 I" R9 V: L
} |