一、原题题目
这里是原题链接 这里是 AcWing 大佬 Fphoenix 写的题解,请允许我借过来一张图来做这次的笔记
二、解题思路:dfs
三、代码实现
#include <stdio.h>
const int N = 10;
int n;
void dfs(int u, int nums[], _Bool st[])
{
if (u > n){
for (int i = 1; i <= n; i ++)
printf("%d ", nums[i]);
printf("\n");
return ;
}
else {
for (int i = 1; i <= n; i ++)
if (!st[i]){
st[i] = 1;
nums[u] = i;
dfs(u+1, nums, st);
st[i] = 0;
}
}
}
int main()
{
scanf("%d", &n);
int nums[N];
_Bool st[10] = {0};
dfs(1 , nums, st);
return 0;
}
调试好久,运行成功:
四、题目总结
总体下来就是跟着大佬的思路走的,虽然不是太明白,但好像就是这么回事,其中在写代码调试的时候发现两个问题(因为我这是纯C语言写的,跟 C++ 还是有点区别的),同样的膜拜两位大佬,帮我解惑:
- C语言的布尔类型(_Bool)
- C语言编译报错error: variably modified ‘***’ at file scope
|