已经改了一百遍的0pts code:
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n,res;
bool row[N],col[N],l[N],r[N],mp[N][N];
inline void dfs(int cur)
{
if(cur == n + 1)
{
++ res;
printf("No.%d\n",res);
for(int i(1);i <= n; ++ i)
{
for(int j(1);j <= n; ++ j)
printf("%d ",mp[i][j]);
putchar('\n');
}
return ;
}
for(int j(1);j <= n; ++ j)
{
if(!col[j] and !l[cur + j] and !r[cur - j + n])
{
col[j] = l[cur + j] = r[cur - j + n] = mp[cur][j] = true;
dfs(cur + 1);
col[j] = l[cur + j] = r[cur - j + n] = mp[cur][j] = false;
}
}
return ;
}
int main()
{
n = 8;
dfs(1);
printf("%d",res);
return 0;
}
请教大家,实在改不出来了.. qwq