这道C语言题错在哪里了

杭电ACM2022(前面都是无用的话)potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。“做什么比较挣钱呢?筛沙子没力气,看大门... 杭电ACM2022(前面都是无用的话)
potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。
“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。
“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。
嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。
说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!
由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪...
面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演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 <iostream>
#define line 100
#define row 100
using namespace std;
int main()
{
int a[line][row], x, y, s;
int m, n;
int result;
while (scanf_s("%d%d", &m, &n) != EOF)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
scanf_s("%d", &a[i][j]);
}
result = a[0][0] * a[0][0];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n - 1; j++)
{
if (result<(a[i][j ] * a[i][j]))
{
result = a[i][j]*a[i][j];
x = i;
y = j;
s = a[i][j];
}
}
}
cout << x + 1 << " " << y + 1 << " ";
cout << s << endl;
}
return 0;
}
输出一致,为什么一直是wrong answer
展开
 我来答
qicaiwuya3
2014-10-31 · TA获得超过181个赞
知道答主
回答量:48
采纳率:100%
帮助的人:52.5万
展开全部

#include <iostream>
#define line 100
#define row 100
using namespace std;
int main()
{
    int a[line][row], x, y, s;
    int m, n;
    int result;
    int i, j ;
    while (scanf("%d%d", &m, &n) != EOF)
    {
        for (i = 0; i < m; i++)
        {
            for (j = 0; j < n; j++)
            {
                scanf("%d", &a[i][j]);
            }
        }
        result = abs((double)a[0][0]);
        x=0;
        y=0;    //假如只有一个人,那么不会进入循环,所以,这里必须做一次赋值
        s=a[0][0] ;
        for (i = 0; i < m; i++)
        {    
            for (j = 0; j < n; j++)        //这里的条件应该是 j<n 而不是j<n-1
            {
                if (result<abs((double)a[i][j]))    //题目说了得分可能取很大的值,如果平方运算,可能溢出啦
                {
                    result = abs((double)a[i][j]);
                    x = i;
                    y = j;
                    s = a[i][j];
                }
            }
        }
        cout << x + 1 << " " << y + 1 << " ";
        cout << s << endl;
    }
    return 0;
}


//做acm题目需要考虑全面,并不是说跟样例输出一样就正确了,很多边界条件是没有在输入样例中列举的,需要自己好好考虑。

//我刚才在杭电acm测试了,代码可以accepted

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式