HDU---2022题海选女主角

感觉题目描述很搞笑,在那不断的恶搞。呵呵,感觉出题人肯定是一个很有趣的人。其实题目很简单,找出所有的数据当中成绩绝对值最大的那个选手。唯一一点需要注意的就是题目中排序需要按照成绩的绝对值,所以需要我们先计算出绝对值来。这个题目首次在bool函数当中用了这么多判断,其实这个题跟NYOJ上的一种排序很相像,不过上次比较笨,用的是很长很长的if判断语句。其实这个题也应该算是一种排序的模版吧。

这个题一次AC,没有太过纠结。不过在敲代码的过程当中出现了几次错误,也有几点感悟,都随手写在代码上了,大家可以参考一下或许会有些收获。

原题地址:点击打开链接

代码如下:

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<math.h>

using namespace std;
struct ch
{
	int hang;//定义行
	int lie;//列数
	int cj;//分数(可以为负)
	int zhi;//分数的绝对值
}d[10001];
bool comp(ch x,ch y)
{
	if(x.zhi>y.zhi)  return true;
	if(x.zhi==y.zhi&&x.hang<y.hang)return true ;
	if(x.zhi==y.zhi&&x.hang==y.hang&&x.lie<y.lie)return true;
	else return false; 
}//整个函数进行排序,规避了sort排序不稳定的风险。
int main()
{
	int i,j,k,l,n,m;
	while(scanf("%d %d",&n,&m)!=EOF)
	{   l=0;
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=m;j++)
			{
				scanf("%d",&k);
				d[l].cj=k;
				d[l].zhi=abs(k);
				d[l].hang=i;
				d[l].lie=j;
				l++;//此处需要注意,不能直接用l++;否则丢失数据。
			}
		}
		sort(d,d+l,comp);//因为在上面l多加了1,所以可直接应用。
		printf("%d %d %d\n",d[0].hang,d[0].lie,d[0].cj);
	}return 0;
}
觉得以后要养成一种习惯,把自己当时写代码时的感悟,错误,修改的地方都随手加上备注,记录下来。不仅仅是为了方便其他人看,同时自己回顾的时候也可以一目了然,最快的复习。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值