poj1323
题目大意:n个人在玩牌,每个人有m张牌,于是就有n*m张牌(每张牌都有一个值,介于1到n*m之间,不重复),然后进行m轮游戏,每轮每个人都出一张牌,牌最大的那个人就赢了,然后给出n和m,以及你的m张牌,问你最多能赢几轮?
#include <iostream> using namespace std; int a[1010]; int n,m; int hava(int i) { int j; for(j=0;j<m;j++) if(a[j]==i) return 1; return 0;//这里千万要注意,不可写为else return 0,若这样写,编译器把if,else视为一个快语句。切记……(这一点浪费了20分钟,唉,基础才是王道啊) } int main() { int t=1; int i; while(true) { cin>>n>>m; if(n==0 && m==0)break; for(i=0;i<m;i++) cin>>a[i]; int max=0; int count=0; for(i=n*m;i>=1;i--) { if(hava(i)==1) count++; else count--; if (max<count) max=count; } cout<<"Case "<<t<<": "<<max<<endl; t++; } return 0; }