海选女主角

Problem Description

potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。
“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅…”potato老师很是无奈。
“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。
嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。
说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!
由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪…
面试那天,刚好来了mn个MM,站成一个mn的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。
一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。
分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。
特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。

Input

输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。

Output

对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。
note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。

Sample Input

2 3
1 4 -3
-7 3 0

Sample Output

2 1 -7

方法一:

#include<stdio.h>
 int main()
 {
   
 	int m,n;
 	while(~scanf("%d %d",&m,&n))
 	{
   
	 int a[m][n],b[m][n],i,j,max1=0,max2=0;
	 for(i=0;i<m;i++)
	 	for(j=0;j<n;j++)
	 	{
   
	 	 scanf("%d",&a[i][j]);
		 if(a[i][j]<0) b[i][j]=-a[i][j];
		 else b[i][j]=a[i][j];
		}
		for(i = 0; i < m; i++)
			for(j = 0; j < n; j++)
				if(b[i][j]>b[max1][max2]) max1= i,max2= j;
	 printf("%d %d %d\n",max1+1,max2+1,a[max1][max2]);
	}
 }

方法二:

#include <stdio.h>
#include<math.h>
int main()
{
   
	int m, n;
	while(~scanf("%d %d", &m, &n))
	{
   
		int a[m][n],i,j,max1=0, max2=0;
		for(i = 0; i < m; i++)
			for(j = 0; j < n; j++)
				scanf("%d", &a[i][j]);		
		for(i=m-1;i>=0;i--)
	 		for(j=n-1;j>=0;j--)
	 			if(fabs(a[i][j])>=fabs(a[max1][max2])) max1=i,max2=j;
		printf("%d %d %d\n", max1+1, max2+1,a[max1][max2]);
	}
} 

总结:

其实,方法一和方法二思路是一样的,只是在细节之处略有差异。
1、方法二用了fabs函数,更为简便,方法一调用了另一个数组来储存读入数据的绝对值,之后再进行比较。
2、方法一进行排序时,是从第一个数开始的,找到绝对值最大的数后,如果遇到与其相同的数,不必再进行数组下标的交换(因为要求输出行号和列号最小的数据),所以判断条件是b[i][j]>b[max1][max2],也即大于假设的最大值时才交换(等于假设的最大值时不交换)。
方法二进行排序时,是从最后一个数开始的,找到绝对值最大的数后,如果遇到与其相同的数,必须进行数组下标的交换(因为要求输出行号和列号最小的数据),所以判断条件是fabs(a[i][j])>=fabs(a[max1][max2]),也即不小于假设的最大值就交换(等于假设的最大值时也交换)。
3、还有就是要注意题目要求输出的是行号和列号,而不是数组下标,所以找到绝对值最大的数据的下标后,输出时要加1。

全部评论

相关推荐

10-16 22:56
门头沟学院 C++
1234567800:歌尔今年给211开14-15k吗,我本地人连面试都不给😂
点赞 评论 收藏
分享
10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务