zoukankan      html  css  js  c++  java
  • 1183: 零起点学算法90——海选女主角(C语言)

    一、题目

    http://acm.wust.edu.cn/problem.php?id=1183&soj=0

    二、分析

    1. 从描述来看,就是找出一个二维数组中绝对值最大的数;
    2. 带符号的32位整数,刚好是int型的表示范围;
    3. 0<n,m<100,说明二维数组大小为99*99;
    4. 多组输入;
    5. 边输入边判断大小,缩短时间;
    6. 用x,y记录绝对值最大的下标(数组从[0][0]开始);
    7. 输出时,x,y要加1。

    三、代码

    1、第一次提交

    第一次提交代码

    结果:Runtime Error。

    原因:数组越界。

    解决方法:数组a应该定义为100*100的。

    疑问:题目是0<n,m<100,我觉得应该是99*99,搞不懂为什么越界了。

    2、第二次提交

    1183:第二次提交代码

    结果:Accepted(正确)。

    疑问:题目明确最小数为-2147483648,而int型的范围是-2147483648~2147483647,但是abs返回的是int型数据,求绝对值时超过了范围,不知道为什么提交是对的。

    解决方法:稳妥起见将abs换成fabs,fabs返回的是double型的。

    运行截图:

    1183:第二次运行截图

    3、第三次提交

    #include<stdio.h>
    #include<math.h>
    int main() {
    	int m, n, a[100][100], x, y, i, j;
    	while (scanf("%d%d", &m, &n) != EOF) {
    		x = 0, y = 0; // 初始化为第一个数绝对值最大
    		for (i = 0; i < m; i++) {
    			for (j = 0; j < n; j++) {
    				scanf("%d", &a[i][j]); // 输入m*n个数
    				if (fabs(a[x][y]) < fabs(a[i][j])) { // 如果当前数绝对值比之前的最大值大
    					x = i; // 记录下标
    					y = j;
    				}
    			}
    		}
    		printf("%d %d %d
    ", x + 1, y + 1, a[x][y]); // 输出x,y要加1
    	}
    	return 0;
    }

    结果:Accepted(正确)

    运行截图:

    1183:运行截图

     

  • 相关阅读:
    tensorflow之tf.meshgrid()
    Python中数据的保存和读取
    透视投影推导
    tensorflow之tf.slice()
    tensorflow的tf.train.Saver()模型保存与恢复
    偶数分割求平均值
    母牛的故事
    统计一行的不重复的单词字符个数
    N个顶点构成多边形的面积
    贪心法基本入门
  • 原文地址:https://www.cnblogs.com/wowpH/p/11060852.html
Copyright © 2011-2022 走看看