HDU 1052 田忌赛马
来源:互联网 发布:淘宝如何进入闲鱼 编辑:程序博客网 时间:2024/05/29 09:10
有点意思的贪心问题
乍一看挺简单的,细一想挺有意思的
一开始因为这个情况老WA:
田忌: 10 8 7
皇帝: 11 10 9
当时脑子短路,觉得能平就比,这是错的,比如上述情况,如果10v10,结果1平2负,如果10v9,则是1胜2负,明显第二种好一些
关键在于想明白这几种情况:
1、田忌头马比皇帝头马快,则赢一场
2、田忌末马比皇帝末马慢,则输一场
3、田忌头马与皇帝头马相等时:
1>如果田忌末马比皇帝末马快,则赢一场
2>如果田忌末马比皇帝末马慢,则输一场
3>如果田忌末马与皇帝末马相等时:
一、如果田忌末马比皇帝头马慢,则输一场
二、否则,平一场
import java.util.Scanner;public class _1052_田忌赛马 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int n = sc.nextInt();if (n == 0) {break;}// 田忌int[] sunBin = new int[n];// 皇帝int[] emperor = new int[n];// 输入田忌的马for (int i = 0; i < n; i++) {sunBin[i] = sc.nextInt();}// 输入皇帝的马for (int i = 0; i < n; i++) {emperor[i] = sc.nextInt();}int result = compare(sunBin, emperor);System.out.println(result);}}public static int compare(int[] T, int[] E) {T = sortedArray(T);E = sortedArray(E);int T_B = 0, T_E = T.length - 1, E_B = 0, E_E = E.length - 1;int sum = 0;// 循环直到田忌的头马比皇帝的头马快while (T[T_B] < E[E_B]) {T_E--;E_B++;sum -= 200;if (T_E <= 0)break;}/** * 分情况: * * 1、田忌头马比皇帝头马快,则赢一场 * * 2、田忌末马比皇帝末马慢,则输一场 * * * 3、田忌头马与皇帝头马相等时: * * 1>如果田忌末马比皇帝末马快,则赢一场 * * 2>如果田忌末马比皇帝末马慢,则输一场 * * * 3>如果田忌末马与皇帝末马相等时: * * 一、如果田忌末马比皇帝头马慢,则输一场 * * 二、否则,平一场 */while (T_B <= T_E) {if (T[T_B] > E[E_B]) {T_B++;E_B++;sum += 200;} else if (T[T_B] < T[E_B]) {T_E--;E_B++;sum -= 200;} else {if (T[T_E] > E[E_E]) {T_E--;E_E--;sum += 200;} else if (T[T_E] < E[E_E]) {T_E--;E_B++;sum -= 200;} else {if (T[T_E] < E[E_B]) {sum -= 200;}T_E--;E_B++;}}}return sum;}public static int[] sortedArray(int[] array) {for (int i = array.length - 1; i > 0; i--) {for (int j = 0; j < i; j++) {if (array[j] < array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}return array;}}
- HDU 1052 田忌赛马
- HDU 1052 田忌赛马
- hdu 1052 田忌赛马
- hdu 1052 田忌赛马
- hdu 1052 田忌赛马
- hdu-1052田忌赛马
- hdu 1052 田忌赛马
- HDU 1052 田忌赛马
- 田忌赛马HDU
- HDU:田忌赛马(1052)
- hdu 1052 田忌赛马加强
- hdu 1052(田忌赛马)
- hdu 1052 田忌赛马(贪心)
- HDU 1052(贪心 田忌赛马)
- HDU 1052 田忌赛马(贪心)
- NYOJ 364 HDU 1052 田忌赛马
- NYOJ 364 & HDU 1052 田忌赛马(贪心)
- hdu 1052(田忌赛马 贪心算法,sort排序)
- MFC 改变对话框的几个消息函数OnEraseBkgnd、 OnPaint、 OnCtlColor的调用次序
- Linux 中常用的查询命令的小解
- MySQL数据库性能优化之硬件优化
- Linux下rsync的用法
- ERROR 1418 (HY000) at line 1323: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA
- HDU 1052 田忌赛马
- maven常用命令
- MySQL索引背后的数据结构及算法原理
- frame点击左侧右侧改变
- 文章10:Nginx的超时处理
- Oracle的块修改跟踪
- Maven 中出现[WARNING] We have a duplicate的解决办法
- ubuntu 11.10添加桌面快捷方式
- android 多线程应用 下载代码