该程序应输出12x24的网格,所有外线输出0,内部输出1
这是我试图让第一列和第一行输出0:
#include <iostream>
using namespace std;
#define N 24
// print:
//
// Prints the simulation matrix M as spaces, *'s, and T's.
//
void print(int M[][N], int ROWS, int COLS)
{
// YOU MUST IMPLEMENT THIS:
}
//
// fill:
//
// Fills the simulation matrix such that the boundary rows
// and columns are empty, the internal area is all trees,
// and one tree is burning at index position (row, col).
//
void fill(int M[][N], int ROWS, int COLS, int row, int col)
{
// YOU MUST IMPLEMENT THIS:
//
// main:
}//
int main()
{
int M[N/2][N];
int ROWS, COLS;
int r, c;
ROWS = sizeof(M) / sizeof(M[0]);
COLS = sizeof(M[0]) / sizeof(M[0][0]);
fill(M, ROWS, COLS, 1, 1);
for(r=0; r< ROWS; r++)
{
for(c=0; c< COLS; c++)
{
if(ROWS>1)
{
M[ROWS][COLS]=1;
cout<< M[ROWS][COLS];
}
else
{
M[ROWS][COLS]=0;
cout<< M[ROWS][COLS];
}
}
cout<< endl;
}
print(M, ROWS, COLS);
return 0;
}
如何做到这一点?
答案 0 :(得分:1)
首先,问问自己:“我如何创建一个盒子?”要创建一个盒子,您需要 4面。 然而,最简单的方框可以包含两行,因为我们可以将框的高度设为零 - 或 infinitesimal < / EM> 即可。在代码中,您至少需要2行来创建一个框。
像这样:
000000000000000
000000000000000
但是,没有高度。换句话说,这是一个零高度的边框。
因此要创建一个这样的框:
000000000000000
011111111111110
000000000000000
你注意到了什么? 第一行和最后一行都是零。 和,中间行的第一个和最后一个元素是零,该行的其他所有内容都是1。
进一步扩展:
000000000000000
011111111111110
011111111111110
000000000000000
我们看到相同的模式 - 所以这可以扩展到第n行的情况。因此,算法是:
因此,在您的情况下:
for(r=0; r< ROWS; r++)
{
for(c=0; c < COLS; c++)
{
if (r == 0 || r == ROWS - 1) {
M[r][c]=0;
}
else if(c == 0 || c == COLS -1) {
M[r][c]=0;
}
else {
M[r][c]=1;
}
cout<< M[r][c];
}
cout << endl;
}