求调
查看原帖
求调
1251525
wisdom2010楼主2024/7/20 21:30
#include<bits/stdc++.h>
using namespace std;
int n;
const int maxn = 13 + 5;
int lie[maxn] = {0}, r[maxn] = {0}, l[maxn] = {0};
int dis[maxn];
int ans = 0;
void dfs(int step)
{
    if(step == n)
    {
        ans++;
        if(ans <= 3)
			for(int i = 0; i < n; i++)
				printf("%d ", dis[i] + 1);
		if(ans <= 3)
			printf("\n");
        return ;
    }
    for(int i = 0; i < n; i++)
    {
        if(lie[i] != 1 && l[step + i] != 1 && r[step - i + n] != 1)
        {
            lie[i] = 1;
            l[step + i] = 1;
            r[step - i + n] = 1;
            dis[step] = i;
            dfs(step + 1);
            lie[i] = 0;
            l[step + i] = 0;
            r[step - i + n] = 0;
        }
    }
}
int main()
{
    scanf("%d", &n);
    dfs(0);
    printf("%d", ans);
    return 0;
}

为什么n = 13时wa了?

2024/7/20 21:30
加载中...