我是否正确执行了此程序?

0 c++ variable-assignment

赋值是用回溯完成8皇后二维数组程序.

#include <iostream>

using namespace std;

int main() {
    int b[8][8] = { 0 };
    int r, c, i;
    int count = 1;
    b[0][0] = 1;
    c = 0;

nextColumn:
    c++;
    if (c == 8)
        goto print;
    r =- 1;

nextRow:
    r++;
    if (r == 8)
        goto back;
    for (i = 0; i < c; i++) {
        if (b[r][i] == 1)
            goto nextRow;
    }
    for (i = 0; (r - i) >= 0 && (c - i) >= 0; i++) {
        if (b[r - i][c - i] == 1)
            goto nextRow;
    }
    for (i = 0; (r + i) < 8 && (c - i) >= 0; i++) {
        if (b[r + i][c - i] == 1)
            goto nextRow;
    }
    b[r][c] = 1;
    goto nextColumn;
    c--;
    if (c == -1)
        return 0;
    r = 0;
    while (b[r][c] != 1)
        r++;
    b[r][c] = 0;
    goto nextRow;
    cout << endl;
    cout << "Result No." << count << endl;
    cout << endl;
    for (r = 0; r < 8; r++){
        for (int c = 0; c < 8; c++){
            cout << b [r][c];
        }
        cout << endl;
    }
    count++;
    goto back;
}
Run Code Online (Sandbox Code Playgroud)

Mal*_*lio 5

好吧,不.

  • 一切都是一大功能; 它应该被打破到很少的功能
  • 该计划 - 与所有计划一样 - 应该是自我测试.应该有一个函数,true如果程序工作,false如果没有,则返回.
  • 你正在使用单字符变量名; 变量应该有有意义的名称.
  • 你在每个级别写cout; 你应该进行计算,返回结果,然后(可选)将结果打印到cout.
  • 你正在使用goto,通常是ConsideredHarmful.而你使用它了很多,这始终是ConsideredHarmful.

  • @Delan Azabani - "除此之外,[林肯太太](http://en.wikipedia.org/wiki/Assassination_of_Abraham_Lincoln),你是怎么欣赏这出戏的?" 一个程序目前是否产生正确的答案很少重要.在学术界(我认为是OP的地方),它不会让他获得好成绩; 在专业领域,你不能*告诉*如果代码是一团糟,它是否得到了正确的答案,如果它确实如此,那么要求将不可避免地随着时间的推移而改变,并且编写得不好的程序将很快崩溃. (6认同)