C++面向过程解决鞍点的程序

[复制链接]
查看11 | 回复1 | 2010-9-21 19:25:49 | 显示全部楼层 |阅读模式
题目是求二维数组的鞍点 鞍点就是该行最大 该列最小 一个二维数组只有一个鞍点 或者没有
程序如下:
#include
using namespace std;
int main()
{ const int n=4,m=5;
//假设数组为4行5列

int i,j,a[n][m],max,maxj;
bool flag;
for (i=0;i>a[j];
for (i=0;imax)

{max=a[j];
//将本行的最大数存放在max中

maxj=j;
//将最大数所在的列号存放在maxj中

}

flag=true;
//先假设是鞍点,以flag为真代表

for (int k=0;ka[k][maxj])//将最大数和其同列元素相比

{flag=false;
//如果max不是同列最小,表示不是鞍点令flag1为假

continue;}

if(flag)
//如果flag1为真表示是鞍点
{cout<<"a["<<i<<"]["<<"["<<maxj<<"]="<<max<<endl;

//输出鞍点的值和所在行列号
break;
}
}
if(!flag)
//如果flag为假表示鞍点不存在

cout<<"It does not exist!"<<endl;
return 0;
}
其中的continue语句对吗 为什么不可以用break这个一直不理解 谢谢解答

回复

使用道具 举报

千问 | 2010-9-21 19:25:49 | 显示全部楼层
这个题用break和continue 得到结果完全一样的吧,不信你试试,其实正确的应该是break吧,因为用continue会做很多无用功的,因为用break的话for (int k=0;k<n;k++)if为真时这一层循环就结束了,而continue只是结束了k为某个值的一次循环,接下来还会继续做毫无意义的判断的,因为flag已经是false了啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行