题解比萨
Posted kcn999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解比萨相关的知识,希望对你有一定的参考价值。
题目描述
南海的最大比萨店为即将来临的节日准备了T种不同加味的原料,但考虑到南海人的口味和其它一些因素,原料的使用有N种限制。
T种不同原料的编号为1...T。一个限制如“5 3”即表示5号和3号加味原料不能同时使用。如此,此时使用三种原料3,5,6的比萨是不允许的。
现在请你帮忙计算在上面条件下,最多可以制作多少不同的比萨(包括不添加任何加味原料的)。
输入输出格式
输入格式
第一行,两个整数:T和N。
下面有N行,每行表示一种限制。每行的第一个整数Z(1≦Z≦T)表示这行后面有Z个表示原料编号的整数,这些原料不能同时出现在一个比萨中。
输出格式
一行,一个整数表示在上面的限制下最多可以制成多少种不同比萨。
输入输出样例
输入样例
6 5
1 1
2 4 2
3 3 2 6
1 5
3 3 4 6
输出样例
10
说明
样例说明
共以下十种答案:无加料;2;2和3;2和6;3;3和4;3和6;4;4和6;6。
题解
枚举每一种配料是否出现即可。
#include<iostream> using namespace std; int t,n; int temp,r[100][100]; int num,a[100],judge; bool flag=true; int main() { cin>>t>>n; for(int i=1;i<=n;i++) { cin>>temp; for(int j=1;j<=temp;j++) { cin>>r[i][j]; } } while(!a[0]) { if(flag) { num++; } flag=true; for(int i=t;i>=0;i--) { if(a[i]) { a[i]=0; } else { a[i]=1; break; } } for(int i=1;i<=n;i++) { if(!r[i][2]) { if(a[r[i][1]]) { flag=false; break; } } else { for(int j=1;;j++) { if(!a[r[i][j]]) { break; } else if(!r[i][j+1]) { flag=false; break; } } if(!flag) break; } } } cout<<num; return 0; }
以上是关于题解比萨的主要内容,如果未能解决你的问题,请参考以下文章
《python从入门到实践》--第四章基本操作列表 重点及课后练习