全排列问题

mac2022-06-30  29

P1706 全排列问题

简单的搜索与回溯。

#include<bits/stdc++.h> using namespace std; int a[40],n,r; bool flag[40]= { }; void print() { for(int i=1; i<=n; i++) { if(a[i]==0)continue; else printf("]",a[i]);//输出全排列 } cout<<endl; } void search(int k)//k记录当前位数 { if(k==n)print();//k记录满则输出 for(int i=1; i<=n; i++) { if(!flag[i])//flsg记录这个数有没有被用过 { a[k+1]=i;//记录这个数 flag[i]=1; search(k+1); flag[i]=0;//搜索与回溯 } } } int main() { scanf("%d",&n); search(0);//从第0位开始搜素 return 0; }

 

转载于:https://www.cnblogs.com/yige2019/p/11300508.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)