(原創題) 比大小 (貪心 模擬 分類)

2021-08-07 14:49:24 字數 1711 閱讀 6667

problem description

小明和小花在玩乙個比大小的遊戲,現在有四個互不相同但位數相同的數字,小花先取兩個,剩下的留給小明。小明和小花可以分別從中再選出乙個數字,進行一些操作。小明可以把數字『6』變成數字『9』,小花可以把數字『2』變成數字『5』。但是由於小花先取,所以最多只能進行k-1次操作,而小明最多可以進行k次操作。問最後兩個人操作之後的數哪個更大?假設小明和小花都足夠聰明。

input

第一行輸入乙個整數t,表示資料組數(1< t<10000);

第二行輸入四個整數a,b,c,d(0<=a、b、c、d<=10^9);

第三行輸入乙個整數k,表示最多可以進行的操作次數(0<=k<=10);

output

對於每組資料,如果小花贏了,輸出「win」,如果兩個數相同,輸出「equal」,如果小花輸了,輸出「lose」。

sample input

2 123 126 135 136

1 16 63 76 65

1sample output

win

lose

最得意之作,沒有之一。為此我在驗的時候還探索出了如何比較同根數的理論。整個實現花了我將近兩個禮拜的時間。

#include

#include

#include

#include

using

namespace

std;

struct nodes1[5],s2[5];

long

long cmp(node a,node b)

long

long change(char s,long

long k,int a,int b)

else

ans=ans*10+s[i]-'0';

}for(;s[i]!='\0';i++)

ans=ans*10+s[i]-'0';

return ans;

}int main()

cin>>k;

for(int i=0;i<4;i++)

s1[i].x=change(a[i],k-1,2,5);

for(int i=0;i<4;i++)

s2[i].x=change(a[i],k,6,9);

sort(s1,s1+4,cmp);

sort(s2,s2+4,cmp);

int blag;

if(s1[0].x2].x) //必輸

blag=-1;

else

if(s1[0].x==s2[2].x)

}else

if(s1[0].x>s2[2].x)

else

blag=-1;

}else

if(s1[1].x==s2[2].x)

}else

if(s1[1].x2].x)

}else

if(s1[0].x==s2[1].x)

else

if(s1[0].x>s2[1].x)

blag=1;

}if(blag==-1)

cout

<<"lose"

if(blag==0)

cout

<<"equal"

if(blag==1)

cout

<<"win"

0;}

poj 1323 貪心(比大小遊戲)

題意 一種撲克遊戲。m個人玩,一共有n m張牌,開始每人發n張。牌上的數字從1到n m。一輪每人出一張,數字最大的獲勝,一共n輪結束。給定你的手牌,問你至少贏的輪次。思路 就是貪心。拿第乙個樣例來說 兩個人,數字為1 10 手牌為 1 7 2 10 9,先排序為10,9,7,2,1。其中10和9無論...

NYOJ 題目73 比大小

描述 給你兩個很大的數,你能不能判斷出他們兩個數的大小呢?比如123456789123456789要大於 123456 輸入 每組測試資料佔一行,輸入兩個不超過1000位的10進製整數a,b 資料保證輸入的a,b沒有字首的0。如果輸入0 0表示輸入結束。測試資料組數不超過10組 輸出如果a b則輸出...

java中String比大小

有三種方法實現 第一種直接用字串類的compareto方法 string t1 20131011 string t2 20131030 int result t1.compareto t2 第二種是把這個日期字串轉換成long dateformat sdf new dateformat yyyymm...