花生采摘
2015-08-11 22:38
387 查看
http://www.acmicpc.sdnu.edu.cn/problem/show/1167
http://codevs.cn/problem/1093/
不知道以前无意中用没用过模拟,但是 这是我印象中的第一次的模拟。这题需要注意的地方有第一次模拟时的比较条件,以及是否是否可以继续模拟的判断条件,尤其是后一条,在进行模拟的时候需要保证去采摘后,能够返回,所以判断条件的时间需要加上x,但是算时间的时候别忘了多减去了还要加上去,具体的看题解吧。
http://codevs.cn/problem/1093/
不知道以前无意中用没用过模拟,但是 这是我印象中的第一次的模拟。这题需要注意的地方有第一次模拟时的比较条件,以及是否是否可以继续模拟的判断条件,尤其是后一条,在进行模拟的时候需要保证去采摘后,能够返回,所以判断条件的时间需要加上x,但是算时间的时候别忘了多减去了还要加上去,具体的看题解吧。
#include<iostream> #include<stdio.h> #include<cmath> #include<string> #include<algorithm> using namespace std; int a[1050][1050] = { 0 }; int main() { int n, m, k; cin >> n >> m >> k; for (int i = 1; i < n+1; i++) { for (int j = 1; j < m + 1; j++) scanf_s("%d",&a[i][j]); } int daan = 0; int x, y, xx, yy; int temp = 1; while (1) { int max = -9999; for (int i = 1; i < n+1; i++) { for (int j = 1; j < m + 1;j++) if (max<a[i][j]) { max = a[i][j]; x = i; y = j; } } if (max==-9999||max==0) { break; } a[x][y] = 0; if (temp) { xx = 0; yy = y; temp = 0; } int bushu = abs(xx - x) + abs(yy - y) + x + 1; if (k>=bushu) { daan += max; k = k - bushu + x; xx = x; yy = y; }else { break; } } cout << daan << endl; system("pause"); return 0; }
相关文章推荐
- 线段树 hdu1828 Picture
- wget显示请求和响应的headers
- 黑马程序员——多态
- 第六章 并发:死锁与饥饿
- 操作系统的抽象与虚拟化
- Median of Two Sorted Arrays
- 核心动画 CoreAnimation
- hdu5355
- Leetcode:Rectangle Area
- 无限极分类获取子孙树
- hdu 2004 成绩转换
- IOS入门学习笔记(简单的登录界面)
- 32位和64位系统区别和数据字节
- 高并发系统设计笔记
- python打开浏览器指定网页并填写内容---微信篇
- oop_day03_内存管理、引用类型数组
- 新手代码之while循回
- 黑马程序员——组合与super关键字
- Linux一些经典书籍
- 线段树 hdu3265 Posters