田忌赛马
来源:互联网 发布:数据防泄密方案 编辑:程序博客网 时间:2024/05/16 07:40
田忌赛马
题目:
在故事中的田忌赛马,让人都懂。
国王: 一等马,二等马, 三等马。
田忌: 一等马,二等马, 三等马。
同等级的马,是国王赢。不一样等级的马,就是看谁的等级高。
比赛的过程的就是如下:
国王 一等马 pk 田忌 三等马。 国王 二等马 pk 田忌 一等马。 国王 三等马 pk 田忌 二等马。
现在要给你一些马,让你和国王的马,相比较。
输入:
一个n,表示多少各自匹马!之后第二行就是田忌的马的战斗值,第三行就是国王马的战斗值。
输出:
田忌赢国王的次数和输的次数之和。
解题思路:
(1)故事里面比赛的马,明显国王的马比田忌的马好。(2)比赛拒绝平局,要把每一匹的马的作用发挥到最好,最值。(3)比赛时,马比不过就取与国王的最好的马去比赛,从而去抵消掉过往最好的马。
代码如下:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){int a[1000];int n;int b[1000];int i,s,j,e,sum;while(scanf("%d",&n)!=EOF){if(n==0) break;for( i=0;i<n;i++) scanf("%d",&a[i]);for( i=0;i<n;i++) scanf("%d",&b[i]);sort(a,a+n);sort(b,b+n); i=s=0; //后面开始。 j=e=n-1; //前面开始 sum=0; while(i<=j) { if(a[i]>b[s]) //田忌最差的比国王最差的好,就赚了一场胜利。 { sum++; s++; i++; } else if(a[i]<b[s]) //田忌最差的比国王的最差的还差,就用最差的换掉国王最好的。{ sum--; e--; i++;} else { if(a[j]>b[e]) { sum++; e--; j--; } else { if(a[i]<b[e]) //用天田忌最差的去抵消国王的最好的 { sum--; e--; i++; } } } } printf("%d\n",sum);}return 0;}
阅读全文
0 0
- 田忌赛马
- 田忌赛马
- 田忌赛马
- 田忌赛马
- nyoj364(田忌赛马)
- 田忌赛马
- nyoj364田忌赛马
- HDOJ1052田忌赛马
- acm-田忌赛马
- 田忌赛马
- 田忌赛马
- NYOJ364 田忌赛马
- nyoj364田忌赛马
- LA3266田忌赛马
- 田忌赛马
- 田忌赛马
- 田忌赛马
- poj2287 田忌赛马
- Hadoop基础教程-第4章 HDFS的Java API(4.5 Java API介绍)
- 从Chrome源码看JS Array的实现
- jsp中Object的如何转换
- c++作业6
- C++作业6-数组2
- 田忌赛马
- Dagger2的使用与理解(2)
- Linux命令基础36-tar压缩包和解压命令
- python字符串之'\x00'与空串''的区别
- SpringMVC学习(五)——SpringMVC的参数绑定
- 一步之遥
- 学习MVC之租房网站(十一)-定时任务和云存储
- redis.conf的配置
- 五、Canvas控件