このエラーが発生する理由を調べようとしましたが、何も見つかりませんでした。これは、バックトラッキングによる n-queen 問題のコードです。しかし、これは問題ではありません。このエラーが発生する理由と解決方法を知りたいです。
#include <iostream>
using namespace std;
bool attack_checking(int arr[][s], int s, int i, int j) {
for(int x = 0; x < s; x++)
if(arr[i][x] == 1)
return true;
for(int x = 0; x < s; x++)
if(arr[x][j] == 1)
return true;
for(int x = 0; x < s; x++) {
for(int y = 0; y < s; y++) {
if(x == i && y == j)
continue;
if((x + y) == (i + j)) {
if(arr[x][y] == 1)
return true;
}
if((x - y) == (i - j)) {
if(arr[x][y] == 1)
return true;
}
}
}
return false;
}
bool queen(int arr[][s], int s, int n) {
if(n == 0)
return true;
for(int i = 0; i < s; i++) {
for(int j = 0; j < s; j++) {
if(attack_checking(arr, s, i, j))
continue;
arr[i][j] = 1;
if(queen(arr, s, n - 1))
return true;
arr[i][j] = 0;
}
}
return false;
}
int main() {
int n, s;
cin>>n;
s = n;
int arr[s][s];
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
arr[i][j] = 0;
bool ans = queen(arr, s, n);
if(ans)
{
cout<<"YES\n";
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
cout<<arr[i][j]<<" ";
}
cout<<"\n";
}
}
cout<<"NO";
return 0;
}
new.C:5:32: エラー: 宣言されていない識別子 's' の使用 bool attack_checking(int arr[][s], int s, int i, int j) { ^
new.C:32:22: エラー: 宣言されていない識別子 's' の使用
bool Queen(int arr[][s], int l) { ^
2 つのエラーが発生しました。