UVA565 Pizza Anyone? 枚举

UVA565 Pizza Anyone?

这个题目没啥好讲的,直接暴力枚举即可。

主要是弄清怎样就是满足条件:

他想要的存在或不想要的不存在!!!

Code↓:

#include<string>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define RG register
#define IL inline
#define LL long long
#define DB double
using namespace std;

const int N=1100;

char str[N][N];
int cnt,ans,Max=(1<<16)-1;

IL int check(int state,int i) {
	RG int j,len;
	len=strlen(str[i]);
	for(j=0;j<len-1;j+=2)
		if(str[i][j]=='+') {
			if((state>>(str[i][j+1]-'A'))&1) return 1;
		}
		else if(!((state>>(str[i][j+1]-'A'))&1)) return 1;
	return 0;
}

int main()
{		
	RG int i,j,flag;
	while(scanf("%s",str[++cnt])!=EOF) {
		if(str[cnt][0]=='.') {
			for(i=0,ans=-1;i<=Max;++i) {
				for(j=1,flag=0;j<cnt&&!flag;++j)
					if(!check(i,j)) flag=1;
				if(!flag) {ans=i;break;}
			}
			if(ans==-1) puts("No pizza can satisfy these requests.");
			else {
				printf("Toppings: ");
				for(i=1;ans;ans>>=1,++i) 
					if(ans&1) printf("%c",i+'A'-1);
				putchar('
');
			}
			cnt=0;
		}
	}
	return 0;
}
原文地址:https://www.cnblogs.com/Bhllx/p/10646793.html