1183: 零起点学算法90——海选女主角(C语言)
2024-08-26 18:29:41
一、题目
http://acm.wust.edu.cn/problem.php?id=1183&soj=0
二、分析
- 从描述来看,就是找出一个二维数组中绝对值最大的数;
- 带符号的32位整数,刚好是int型的表示范围;
- 0<n,m<100,说明二维数组大小为99*99;
- 多组输入;
- 边输入边判断大小,缩短时间;
- 用x,y记录绝对值最大的下标(数组从[0][0]开始);
- 输出时,x,y要加1。
三、代码
1、第一次提交
结果:Runtime Error。
原因:数组越界。
解决方法:数组a应该定义为100*100的。
疑问:题目是0<n,m<100,我觉得应该是99*99,搞不懂为什么越界了。
2、第二次提交
结果:Accepted(正确)。
疑问:题目明确最小数为-2147483648,而int型的范围是-2147483648~2147483647,但是abs返回的是int型数据,求绝对值时超过了范围,不知道为什么提交是对的。
解决方法:稳妥起见将abs换成fabs,fabs返回的是double型的。
运行截图:
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\n", x + 1, y + 1, a[x][y]); // 输出x,y要加1
}
return 0;
}
结果:Accepted(正确)
运行截图:
最新文章
- [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute
- java并发编程(五)正确使用volatile
- 数据集转换为Json
- supercool.sh文件里,有哪些恶意的命令
- PHP内核(一)内存管理
- iOS开发中常用到的宏定义
- uva 1025,城市的间谍
- 赋值运算符、拷贝初始化和this指针
- wap图片滚动特效_无css3 元素js脚本编写
- HDU 3433 (DP + 二分) A Task Process
- [MarsZ]Unity3d游戏开发之Unity3d全策划配置新手指引
- 痛并快乐的造轮子之旅:awk访问数据库之旅
- leetcode[68] Climbing Stairs
- ASP.NET多文件批量打包下载
- CentOS7 下使用YUM安装 MySQL5.7
- ruby调用Office Jet引擎压缩access数据库
- 书上关于*(p++)表达式的几种变形形式的思考题
- js 中格式化显示时间
- java面试一、1.3线程与进程
- n!的位数 斯特林公式
热门文章
- TP-Link TL-WR941N Ver 5.1安装OPENWRT过程
- 根据udev的信息判断设备物理路径
- Vue导出ZIP
- ztree checkbox父子联动
- Microsoft VBScript 运行时错误 错误 800a005e 无效使用 Null: Replace
- Asp.Net Core 2.2 - HTTP Error 500.0 - ANCM In-Process Handler Load Failure
- Spring cloud微服务安全实战-5-9实现基于session的SSO(Token有效期)
- Java Class与反射相关的一些工具类
- Linux的桌面虚拟化技术KVM(五)——virsh常用命令
- PAT 甲级 1073 Scientific Notation (20 分) (根据科学计数法写出数)