我有以下2个dim数组。我想找到每行有1
个列的列。
因此,当我运行以下代码时,我希望看到:
0:02 1:13 3:01
但是我不明白。
有什么建议吗?
#define MAX_N 100
int myArray[4][4] = {
{ 1,0,0,1 },
{ 0,1,1,1 },
{ 1,0,1,0 },
{ 0,1,1,0 }
};
int main()
{
int K[MAX_N] = { 0,1,3 };
int B[MAX_N];
for (int i = 0; i < 3; i++)
{
K[i];
cout << K[i] << ": ";
for (int x = 0; x < 4; x++)
{
int count = 0;
for (int y = 0; y < 3; y++)
{
// count = count +1;
if (myArray[x][y])
count = count + 1;
if (count == K[i])
{
B[x] = x;
cout << B[x] << " ";
}
}
}
}
system("pause");
return 0;
}
如果我更改我的初始数组并将其设为:
int myArray[4][4] = {
{ 1,1,0,1 },
{ 0,1,1,1 },
{ 1,0,1,0 },
{ 0,1,1,0 }
};
我会得到以下内容:
0: 02 1:013 3: 01
有没有办法得到那些?换句话说,只获得0,因为当列等于K [i]时,只有0在行中是共同的。所以,结果将是:
0:0 1:0 3:0
甚至只是
0
希望它有意义
答案 0 :(得分:4)
我认为当列等于1
时,您希望获取包含K[i]
的行。
int main()
{
int K[MAX_N] = { 0,1,3 };
for (int i = 0; i < 3; i++)
{
cout << K[i] << ": ";
for (int x = 0; x < 4; x++)
{
if (myArray[x][K[i]]) {
cout << x;
}
}
cout << " ";
}
system("pause");
return 0;
}
对于第二个问题,请在break;
之后添加cout << x;
。
答案 1 :(得分:0)
当您想要查看矩阵中的元素时,您只需要2个周期,而是创建一个用于打印行的新数组,您可以在for中打印索引。
int main()
{
int count;
for(int row = 0; row<4; row++){
count = 0;
for (int col = 0; col < 4; col++) {
if(myArray[row][col] == 1)
count++;
}
cout<<"row "<<row<<"has "<<count<<" 1s";
}
return 0;
}