“21天养成好习惯”第一期-3

今天遇到有关排列的问题在这里插入图片描述
引起了我的思考,题目主要是要找到最大最小值,一般遇到这种问题首先会是这种思路:(以三个数值中选出最大值为例,以下同)
int a,b;
scanf("%d%d",&a,&b);
if(a>b){
printf("%d",a);
}
else
printf("%d",b);
即一个一个比较,但运算步骤多,如果优化一下便是:
int a,b,c,max;
max=0;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
printf("%d",max=a);
}
else
printf("%d",max=b);
if(max>c)
{
printf("%d",max=max);
}
else
printf("%d",max=c);
即设置一个储存max的变量,每次比较将大的那个数储存到此变量,从而简便运算。
但是此运算思路中人工操作太多,数值数一大,也不好计算,所以加入以下结构:
for(i=1,i>=5,i++){

}
即循环五(也可为任意符合范围的正整数)次的语句,在将原代码修改便可达成目的。但即可表排列也可表判断,但若题目中有一限制输入数的条件又好像可以利用了:(此处使用判断,未用排列,方便写代码)

输入数范围在0到100间,且只有最大值大于50

思路为:
int a,max;
max=0;
for(i=1,i>=5,i++){
scanf("%d",&a);
printf("%d",a-50);
if(a>0){
printf("%d",a);
}
else
printf(“No”);
}
即可判断是否为输入数最大值,可见题目的条件会影响排列题目的解法,而一个解法又可能有其他奇特思路简化,从而产生多样的代码,可见代码世界的宏大。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值