H.老子的全排列呢
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的,你给我说出来1-8的全排序,我就让你喝,这次绝不耍你,你能帮帮和尚么?
输入描述:
无
输出描述:
1~8的全排列,按照全排列的顺序输出,每行结尾无空格。
示例1
输入
No_Input
输出
Full arrangement of 1~8
备注:
1~3的全排列 :
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
这个题简直是,真的很想喊一句:老子的全排列呢???!
写的时候简直蠢哭,直接贴的板子,但是自己调试的时候,输出的是1-4的全排列,结果忘记改了直接交上去显示格式错误,我也是醉了。
还特别蠢的问客服小姐姐,格式错误什么情况???我的空格和换行都没错啊,后来发现之后,简直是|ू•ૅω•́)ᵎᵎᵎ(撞墙)
因为是直接贴的网上的板子,不发表任何言论。
代码:
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 #include<queue> 7 using namespace std; 8 int a[100000]; 9 void dfs(int cur,int n){//cur表示目前正在填的数,n表示总共要填的数 10 if(cur==n){//递归边界,说明填完了 11 for(int i=0;i<n;i++){//一个一个的输出 12 if(i!=n-1)cout<<a[i]<<" "; 13 else cout<<a[i]<<endl; 14 } 15 } 16 for(int i=1;i<=n;i++){//把数字1-n填入 17 int ok=1; 18 for(int j=0;j<cur;j++){//遍历目前a数组里面的元素,判断当前这个数有没有填过(用过) 19 if(a[j]==i) ok=0; 20 } 21 if(ok==1){ 22 a[cur]=i;//没有填过就填 ,把它放在a数组的最后 23 dfs(cur+1,n);//再排A数组元素里面的第cur+1个位置 (这里就不需要设置撤销的动作了~反正每次进来都会判断数字有没有填过) 24 } 25 } 26 } 27 int main(){ 28 dfs(0,8); 29 return 0; 30 }
因为不想再补最近的这些题了,随便写写东西代表结束。
后面要学点新东西了(嘻嘻嘻~ )|ω・`)
溜了溜了,最近熬夜太多,心脏疼。。。