程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj 2287 Tian Ji -- The Horse Racing

poj 2287 Tian Ji -- The Horse Racing

編輯:C++入門知識

poj 2287 Tian Ji -- The Horse Racing


poj 2287 Tian Ji -- The Horse Racing

題意:
田忌賽馬
如果3匹馬變成1000匹,齊王仍然讓他的馬按從優到劣的順序出賽,田忌可以按任意順序選擇他的賽馬出賽。贏一局,田忌可以得到200兩銀子,輸一局,田忌就要輸掉200兩銀子,平局的話不輸不贏。
請問田忌最多能贏多少銀子?

思路:
貪心;
如果當前最好的馬可以勝齊王最好的馬,那麼讓這兩匹馬比一場;
如果當前最差的馬能勝齊王最差的馬,那麼讓這兩匹馬比一場;
如果上面兩個條件都不滿足,那麼讓當前最差的馬和齊王最好的馬比一場。

/*poj 2287
  題意:
  田忌賽馬 
  如果3匹馬變成1000匹,齊王仍然讓他的馬按從優到劣的順序出賽,田忌可以按任意順序選擇他的賽馬出賽。贏一局,田忌可以得到200兩銀子,輸一局,田忌就要輸掉200兩銀子,平局的話不輸不贏。 
  請問田忌最多能贏多少銀子?
  思路:
  貪心;
  如果當前最好的馬可以勝齊王最好的馬,那麼讓這兩匹馬比一場;
  如果當前最差的馬能勝齊王最差的馬,那麼讓這兩匹馬比一場;
  如果上面兩個條件都不滿足,那麼讓當前最差的馬和齊王最好的馬比一場。
 */
#include
#include
#include
using namespace std;
const int N=1005;
int a[N],b[N];
void gao(int n){
	int p1=0,p2=0;
	int q1=n-1,q2=n-1;
	int ans=0;
	while(p1<=q1){
		if(a[p1]>b[p2]){
			++p1;
			++p2;
			++ans;
		}
		else if(a[q1]>b[q2]){
			--q1;
			--q2;
			++ans;
		}
		else{
			if(a[p1]!=b[q2])
				--ans;
			++p1;
			--q2;
		}
	}
	printf(%d
,ans*200);
}
int main(){
	int n;
	while(scanf(%d,&n) && n){
		for(int i=0;i

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved