通过递归和回溯实现全排列,主要注意设置标记数组判断是否已经加入排列,注意函数调用结束将标记更改
int n=8; int visit[9]={0}; int arr[8]={0}; void A(int t){ if(t==n){ for(int i=0;i<n;i++){ printf("%d ",arr[i]); } printf("\n"); return; }else{ for(int i=1;i<=n;i++){ if(visit[i]==0){ visit[i]=1; arr[t]=i; A(t+1); visit[i]=0; } } } } int main(){ A(0); return 0; }

京公网安备 11010502036488号