POJ 2664 Prerequisites?(简单题)

【题意简述】:k:已经选择的科目数;m:选择的科目类别;c:能够选择的科目数。r:要求最少选择的科目数量

在输入的k和m以下的一行是选择的科目号。

比如:

3 2                              //3是他选择了3科。2表示选择了两个类别
0123 9876 2222                   //这是他选择的详细的3科科目的科目号
2 1 8888 2222                    //当中2表示在这个类别里共同拥有两科8888和2222,然后最少要选择这两个中的一个
3 2 9876 2222 7654               //这是第二个类别。含义同上。


详细代码:

//208K 500Ms
#include<iostream>
using namespace std;

int k,m,c,r;
int a[100];
int b[100];

int main()
{
	while(1)
	{
		int flag = 0;
		cin>>k;
		if(k == 0) break;
		cin>>m;
		for(int i = 0;i<k;i++)
			cin>>a[i];
		while(m--)
		{
			int count = 0;
			cin>>c>>r;
			for(int i = 0;i<c;i++)
				cin>>b[i];
			for(int i = 0;i<k;i++)
			{
				for(int j = 0;j<c;j++)
				{
					if(a[i] == b[j])
						count++;
				}
			}
			if(count < r)
			{
				flag = 1;
			}
		}
		if(flag)
			cout<<"no"<<endl;
		else
			cout<<"yes"<<endl;
	}
	return 0;
}


posted @ 2017-04-24 09:33  zhchoutai  阅读(223)  评论(0编辑  收藏  举报