我有一个正方形 2dvector(网格),我想在其中插入一个数字(“conc”)为零。 然后,打乱 vector 以分配零。 (假设网格 vector 的大小为 10x10)。
1) 我试过了:
int conc=1;
for (size_t i=0, max=conc; i!=max;i++){
grid.erase(grid.begin()+1);
for (size_t j=0,max=grid.size();j!=max; j++)
grid[i][j]=0;
}
random_shuffle(grid.begin(),grid.end());
问题是,在上面我收到 10 个零(网格大小 = 10x10)而不是 1 个(现在浓度 = 1,所以我想要 1 个零)。
而且这十个零都排成一行。我想把零的个数分布在网格的任意位置。
我想插入 1 个零(conc)。
最佳答案
你可以使用这样的数组:
arr[LINES*COLUMNS]
而不是
arr[i][j]
访问为
arr[i*COLUMNS+j]
使用这种方法,一切都是线性的,假设您希望这种行为用于您的洗牌...
更新
amd 正如 Joachim Pileborg 所建议的那样...阅读有关 random_shufle 的更多信息...
关于c++ - 在网格中的任何位置分布多个零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199328/