提问人:Abhinav Tahlani 提问时间:12/26/2020 最后编辑:PangAbhinav Tahlani 更新时间:12/26/2020 访问量:46
修复引用变量的 C++ 输入问题
Fixing input problems in C++ for reference variables
问:
bool isSafe(char arr[][N],int r,int c)
{
//to check that queens are not in the same column
for(int i=0;i<=r;i++){
if(arr[i][c]=='Q')
return false;}
//to check that queens are not in the same left diagonal
for(int i=r,j=c;i>=0&&j>=0;i--,j--){
if(arr[i][j]=='Q')
return false;}
//to check that queens are not in the same right diagonal
for(int i=r,j=c;i>=0&&j<N;i--,j++){
if(arr[i][j]=='Q')
return false;}
}
这是 N Queens 问题代码的一部分,我使用 Now 将 N 定义为 8,如下所示 -#define N 8
cout<<"The solution(s) are-"<<endl;
char arr[N][N];
memset(arr,'-',sizeof arr); //initializes the entire n*n chessboard with '-'
solveNQueen(arr,0);
这是在 main 函数下。但在这里,我将 N 最初定义为一个常数,等于 8。我不能在 main 下寻找可能的输入语句(N 的),因为这会导致 N 的范围问题,所以在这种情况下,我应该怎么做才能让用户通过终端输入 N 的值,而不会引发任何问题?isSafe()
答:
0赞
john
12/26/2020
#1
简单的解决方案是使用向量。
int n;
cin >> n;
vector<vector<char>> v(n, vector<char>(n));
solveNQueen(v, 0);
bool isSafe(vector<vector<char>>& v,int r,int c)
{
int n = v.size();
...
}
如果您需要知道向量的大小,可以使用 size 方法获取它。v.size();
评论