读书人

为何这个程序没能正常输出

发布时间: 2013-08-04 18:26:16 作者: rapoo

为什么这个程序没能正常输出?


将进度条推到最上,会看到
为何这个程序没能正常输出

我想知道为什么没有从第一种到最后一种全部输出呢?
是程序的问题,还是编译器的问题,你也遇到过这种情况吗?

附上我的代码:


#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

int count = 0;
vector<int> queen(8);

class Queen
{
public:
void EightQueen(int n);
//求解八皇后的主干程序
void ShowAnswer();
//用于输出结果
int Check(int n);
//用于检测这一步的棋是否正确
};

void Queen :: EightQueen(int n) //回溯法,递归求解八皇后问题
{
if(n == 8){
ShowAnswer();
return;
}
for(int i = 0; i <= 7; i++){
queen[n] = i;
if(Check(n) ){ //检验该行
EightQueen(n + 1); //若符合,求解下一行
}
}
}

int Queen :: Check(int n) //检验
{
for(int i = 0; i < n; i++){
if(queen[i] == queen[n])
return 0;
if(abs(queen[i] - queen[n]) == abs(n - i))
return 0;
}
return 1;
}

void Queen :: ShowAnswer() //输出结果
{
count++;
cout << "第" << count << "种" << endl;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
if(queen[i] == j)
cout <<"+";
else
cout << "-";
}
cout << endl;
}
cout <<endl << endl << endl;
}


int main()
//测试程序
{
Queen Eight_Queen;
Eight_Queen.EightQueen(0);
//第0行开始,求八皇后


cout << count << endl;
}

是已经输出了,但是呢,只显示最后一定行数字符。所以你看不到上面的!建议lz输出重导向到文件里
[解决办法]
freopen重定向一下.
[解决办法]
终端有buffer,可以把它调大。
点击左上角,属性里面。

又或者把输出“重定向”到文件,然后用编辑器打开文件看。

读书人网 >C++

热点推荐