社区讨论
《魔术》== “魔”拟
灌水区参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m6gjxn7x
- 此快照首次捕获于
- 2025/01/28 22:07 去年
- 此快照最后确认于
- 2025/11/04 10:12 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n, ans[25], flag[25], noi[25];
void dfs(int dep)
{
if(dep > n)
{
int pos1, pos2, pos3;
for(int i = 1; i <= n; i ++)
{
cout << ans[i] << " ";
noi[i] = ans[i];
if(noi[i] == 1) pos1 = i;
if(noi[i] == 2) pos2 = i;
if(noi[i] == 3) pos3 = i;
}
cout << "\n";
cout << "//" << pos1 << " " << pos2 << " " << pos3 << "//\n";
cout << "->";
if(pos3 != 1) swap(noi[pos3], noi[pos3 - 1]);
for(int i = 1; i <= n; i ++)
{
if(noi[i] == 1) pos1 = i;
if(noi[i] == 2) pos2 = i;
if(noi[i] == 3) pos3 = i;
}
if(pos1 != 3) swap(noi[pos1], noi[pos1 + 1]);
for(int i = 1; i <= n; i ++)
{
if(noi[i] == 1) pos1 = i;
if(noi[i] == 2) pos2 = i;
if(noi[i] == 3) pos3 = i;
}
if(pos2 != 1) swap(noi[pos2], noi[pos2 - 1]);
for(int i = 1; i <= n; i ++)
cout << noi[i] << " ";
cout << "\n";
return;
}
for(int i = 1; i <= n; i ++)
{
if(flag[i] == 1) continue;
ans[dep] = i;
flag[i] = 1;
dfs(dep + 1);
flag[i] = 0;
}
}
int main()
{
//杯子是1, 勺子是2, 筷子是3;
cin >> n;
dfs(1);
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...