C++程序修改~~~

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:42:06
将全排列改成错序排列,就是1不能出现在第一个位置,i不能出现在第i的位置,正确的加100分!!!!!!!!!!!!!!!!!!
#include <iostream>

using namespace std;

void print(char* array,int m){
for(int i=0;i<m;i++){
cout<<*(array+i);
}
cout<<endl;
}

void exchange(char* a,char* b){
char temp;
temp=*a;
*a=*b;
*b=temp;
}

void permutation(char* array,int n,int m){
if(n==m){
print(array,m);
}
else{
for(int i=n;i<m;i++){
exchange(array+n,array+i);
permutation(array,n+1,m);
exchange(array+n,array+i);
}
}
}

void main(){
char test[]={'1','2','3'};
permutation(test,0,sizeof(test));
}

#include <iostream>

using namespace std;

void print(char* array,int m){
for(int i=0;i<m;i++){
cout<<*(array+i);
}
cout<<endl;
}

void exchange(char* a,char* b){
char temp;
temp=*a;
*a=*b;
*b=temp;
}

void permutation(char* array,int n,int m){
if(n==m){
print(array,m);
}
else{
for(int i=n;i<m;i++){
exchange(array+n,array+i);
if (array[n] != n + 0x31 && array[i] != i + 0x31) // '0' = 0x30; '1' = 0x31;
permutation(array,n+1,m);
exchange(array+n,array+i);
}
}
}

void main(){
char test[]={'1','2','3'};
permutation(test,0,sizeof(test));
}