| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5728 人关注过本帖
标题:海选女主角(一道题目)
取消只看楼主 加入收藏
loudqqq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-12-9
收藏
 问题点数:0 回复次数:3 
海选女主角(一道题目)
Description
某个光头的戴眼镜的很帅的老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。

"做什么比较挣钱呢?筛沙子没力气,看大门又不够凶..."光头眼镜帅老师很是无奈。

"张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?"CLZ在一旁出主意。

嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部3D电影《二十二世纪杀人网络之红客帝国之三更半夜翻墙回宿舍》。

说干就干,马上海选女主角(跟老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有AC的基本功,否则直接淘汰。

由于策划师WSG(大师级水王)宣传到位,来应聘的MM很多,当然包括蛋糕妹妹等呼声很高的美女,就连毕了业的人妖师兄都男扮女装来应聘(还好被安全顾问YZY认出,给轰走了),看来娱乐圈比ICPC吸引人呀...

面试那天,刚好来了m*n个MM,站成一个m*n的阵列,副导演CLZ为每个MM打了分数,分数都是32位有符号整数。

一开始光头眼镜帅老师很纳闷:分数怎么还有负的?CLZ解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。

分数送上来了,是光头眼镜帅老师做决定的时候了,一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。

特别说明:如果不幸选中一个负分的MM,也没关系,因为,如果不能吸引你,那要想法恶心你。

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

0 < m, n ≤ 100000

Output
对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。

Note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。

Sample Input
2 3
1 4 -3
-7 3 0

Sample Output
2 1 -7

Hint
测试数据的 m 和 n 不会同时达到100000,当m取100000时,n很小,反之亦然,因此,可考虑采用动态内存分配(malloc)来建立二维数组,这样就不会超内存。

另一种更好的处理方法是:不采用二维数组来存储每个人的得分,照样可以处理得到正确答案。
搜索更多相关主题的帖子: 娱乐圈 张艺谋 3D电影 女主角 开幕式 娱乐圈 张艺谋 3D电影 女主角 开幕式 
2015-12-21 23:17
loudqqq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-12-9
收藏
得分:0 
回复 楼主 loudqqq
这题我有个疑问,这题假如用数组的话,长度实在太大,用动态分配二维数组,不是很熟悉,我用了二级指针来分配,感觉怪怪的。。
能指点一下吗?或者你的方法。。
2015-12-22 13:03
loudqqq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-12-9
收藏
得分:0 
回复 5楼 rjsp
这题我本来是用数组做的,但是按照题目的意思,两个100000长度太大,二维数组存不了,就想试着用动态分配二维数组,我用的是二级指针来分配,
不过感觉怪怪的,比如:
#include <stdio.h>
#include <math.h>
#include <stdlib>
#include <malloc.h>
int main()
{
    unsigned int m,n,i,j,max,p1,p2;
    unsigned int **a;

    while(scanf("%d %d",&m,&n)!=EOF)
    {
        
        a=(unsigned int **)malloc(sizeof(unsigned int*)*m);
        for(i=1;i<=m;i++)
            a[i]=(unsigned int *)malloc(sizeof(unsigned int)*n);
        for(i=1;i<=m;i++)
            for(j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
        max=0;
        for(i=1;i<=m;i++)
          {
              for(j=1;j<=n;j++)
                if(abs(a[i][j])>max)
                {max=a[i][j];p1=i;p2=j;}
          }
        printf("%d %d %d\n",p1,p2,max);
        free(a);
   
    }
}


2015-12-22 18:59
loudqqq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-12-9
收藏
得分:0 
回复 9楼 BlueGuy
哈哈,谢谢你的建议,我是新生,好多东西要学,关于IT的学习,你能给点建议吗
2015-12-23 10:03
快速回复:海选女主角(一道题目)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015869 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved