编程基础-----田忌赛马
来源:互联网 发布:三星ml2161清零软件 编辑:程序博客网 时间:2024/04/26 10:18
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。
给定齐王与田忌的赛马各n匹怎么排顺序才能让田忌胜率更大呢?
首先对齐王与田忌的赛马分别进行由大到小的排序,分出马的等级来。
开始比赛:
把齐王的最差的马同田忌最差的马比较,结果有三种情况:
1、田忌的马更快:比,田忌加分;
2、齐王的马更快:让田忌的这匹马同齐王最快的马比,输也要拉一个最好的;
3、打成平手,这时再如下比:
齐王最快的马与田忌最快的马比较,还是三种情况:
1)田忌的马快,就让它把齐王最快的马比下去;
2)齐王马快田忌就用刚才打平手的劣马同齐王最好的马比,输也要拉一个最好的;
3)平手则让田忌的最慢的马同齐王最快的马比。
#include<stdio.h>void qsort(int *a,int l,int r){ int x=a[l],i=l,j=r; if(l>=r)return ; while(i<j) { while(i<j&&a[j]<=x)j--; a[i]=a[j]; while(i<j&&a[i]>=x)i++; a[j]=a[i]; } a[i]=x; qsort(a,l,i-1); qsort(a,i+1,r);}int main(){ int n,i,tian[1001],wang[1001],la,lb,ra,rb; int count; while(scanf("%d",&n)!=EOF,n) { count=0; for(i=0;i<n;i++) scanf("%d",&tian[i]); for(i=0;i<n;i++) scanf("%d",&wang[i]); qsort(tian,0,n-1); qsort(wang,0,n-1); la=lb=0;ra=rb=n-1; while(la<=ra) { if(tian[ra]<wang[rb]){count--;lb++;ra--;} else if(tian[ra]>wang[rb]){count++;ra--;rb--;} else if(tian[la]>wang[lb]){count++;la++;lb++;} else {if(wang[lb]>tian[ra]){ra--;lb++;count--;} else {ra--;lb++;}} } printf("%d\n",count*200); } return 0;}
- 编程基础-----田忌赛马
- 田忌赛马(编程)
- 算法基础:田忌赛马问题(Golang实现)
- 20170909在线编程之田忌赛马问题
- 田忌赛马
- 田忌赛马
- 田忌赛马
- 田忌赛马
- nyoj364(田忌赛马)
- 田忌赛马
- nyoj364田忌赛马
- HDOJ1052田忌赛马
- acm-田忌赛马
- 田忌赛马
- 田忌赛马
- NYOJ364 田忌赛马
- nyoj364田忌赛马
- LA3266田忌赛马
- 小for的Cocos2d-x学习笔记与感悟4之单击事件
- Marklogic search development -2.1Understanding the Search API
- 关于禁用触摸屏右键的方法
- 黑马程序员-java学习之排序算法
- 汇编不能被C语言取代
- 编程基础-----田忌赛马
- c#窗口句柄
- Marklogic search development -2.2Controlling the Search With the Options Node
- 【RSLogix5000】—(2.1)—RSLogix5000常用指令介绍——原理
- Ant 编译 报非法字符:\65279 错误
- 机器翻译重要过程(4)---估计概率构造短语翻译表
- hdu 4635(强连通分量)
- 获取本机IPV6地址
- Linux 磁盘配额,RAID,LVM