POJ1323 Game Prediction(贪心)

来源:互联网 发布:商标r和tm的区别 知乎 编辑:程序博客网 时间:2024/04/30 08:59

题意:有M个人,一人N张牌,每轮牌面最大的人赢(牌面只可能是1~M*N中的一个数且不重复),给出一个人的牌,求其至少能够赢的局数。

分析:出一张排,看对手是否有比这张牌更大的牌,如果有取其最小(贪心),即对手出一张最小可以压过你的牌。否则这轮就赢了。需要用到一个vis数组来记录哪些牌出过。

代码:

#include <iostream>#include <fstream>#include <cstring>using namespace std;bool vis[1005];int val[55];int main(){//fstream cin("test.txt");int k = 0;int m, n;while (cin >> m >> n,m||n){memset(vis, 0, sizeof(vis));//没清零,WA了一次=。=k++;for (int i = 0; i < n; i++){cin >> val[i];vis[val[i]] = 1;}int ans = 0;for (int i = 0; i < n; i++){bool flag = 0;for (int j = val[i] + 1; j <= m*n; j++){if (!vis[j]){flag = 1;vis[j] = 1;break;}}if (!flag)ans++;}cout << "Case " << k << ": " << ans << endl;}//system("pause");return 0;}


原创粉丝点击