C++从入门到放弃 - 找鞍点问题
原题:
从一个数组阵列中找出某行某列的一个数,该数在该行最大,在该列最小,该数所在位置称为鞍点。也可能不存在鞍点。
int n[5][5] = { {12,3,5,7,9},{20,4,6,8,10},{45,5,7,3,3},{66,5,8,4,245},{65,62,64,9,-55} };
for (int r = 0; r < 5; r++)
{
for (int c = 0; c < 5; c++)
{
cout <<setw(5)<< n[r][c];
}
cout << '\n' << '\n';
}
int Rmax = INT8_MIN;
int Cmin = INT8_MAX;
bool isfind = false;
for (int r = 0; r < 5; r++)
{
for (int c = 0; c < 5; c++)
{
if (Rmax < n[r][c]) {
Rmax = n[r][c];
}
if (Cmin > n[c][r]) {
Cmin = n[c][r];
}
}
cout << r << "行最大值:" << Rmax <<'\n';
cout << r << "列最小值:" << Cmin <<'\n';
if (Rmax == Cmin) {
isfind = true;
cout << "·在第"<<r<<"行列中找到了鞍点,值为:" << Rmax << '\n';
}
if (!isfind) {
cout << "在该行,列中没有找到鞍点。" << '\n';
}
cout << '\n';
Rmax = INT8_MIN;
Cmin = INT8_MAX;
isfind = false;
}