受约束的10人参赛问题
来源:互联网 发布:java finally return 编辑:程序博客网 时间:2024/04/24 11:04
A,B,C,D,E,F,G,H,I,J,共10名学生有可能参加计算机竞赛,也可能不参加,因为某种原因他们受到下列条件的约束:
1. 如果A参加,B也参加;
2. 如果C不参加,D也不参加;
3. A和C中只能有一个人参加;
4. B和D中有且仅有一个人参加;
5. D、E、F、G、H 中至少有2人参加;
6. C和G或者都参加,或者都不参加;
7. C、E、G、I中至多只能2人参加
8. 如果E参加,那么F和G也都参加。
9. 如果F参加,G、H就不能参加
10. 如果I、J都不参加,H必须参加
请编程根据这些条件判断10名同学参赛者名单 比如LC D G J
/**个人分析:暴力枚举,注意条件s[0] 1 2 3 4 5 6 7 8 9 A B C D E F G H I Jjudge()用来判断条件func()用来生成各种组合情况自己编程出现的问题:1、func(),到达n==10才意味着生成了一种新的组合;2、题目条件转换成代码时,出现问题 比如:如果A参加,B也参加 if(!(A==1 && B==1))return false; 错误在于:这样写,意味着A必须参加 正解:老老实实按着题目翻译 if(A==1)//如果A参加 { if(B==0)//而B不参加 return false; } */#include <iostream>using namespace std;bool judge(int const *s){//如果A参加,B也参加if(s[0]==1){if(s[1]==0)return false;}//如果C不参加,D也不参加if(s[2]==0){if(s[3]==1)return false;}//A和C中只能有一个人参加if(s[0]*s[2]==1)return false;//B和D中有且仅有一个人参加if(!((s[1]==1 && s[3]==0)||(s[1]==0 && s[3]==1)))return false;//D、E、F、G、H 中至少有2人参加int ans = 0;if(s[3]==1)ans++;if(s[4])ans++;if(s[5])ans++;if(s[6])ans++;if(s[7])ans++;if(ans<2)return false;//C和G或者都参加,或者都不参加if(!((s[2]==1&&s[6]==1)||(s[2]==0&&s[6]==0)))return false;//C、E、G、I中至多只能2人参加ans = 0;if(s[2]==1)ans++;if(s[4])ans++;if(s[6])ans++;if(s[8])ans++;if(ans>2)return false;//如果E参加,那么F和G也都参加if(s[4]==1){if(s[5]==0 || s[6]==0)return false;}//如果F参加,G、H就不能参加if(s[5]==1){if(s[6]==1 || s[7]==1)return false;} //如果I、J都不参加,H必须参加if(s[8]==0 && s[9]==0){if(s[7]==0)return false;} return true;}void func(int *s,int n){ if(n==10){if(judge(s)){for(int i=0;i<=9;i++){if(s[i]==1)cout<<char(i+'A')<<" ";}cout<<endl;}}else if(n>10)return;s[n] = 0;func(s,n+1);s[n] = 1;func(s,n+1);}int main(){int s[10] = {0};func(s,0); return 0;}
0 0
- 受约束的10人参赛问题
- 受约束的十人参赛问题
- MySQL的约束问题
- UIImageView的约束问题
- 人参在海外的研究应用概况
- 将人参奉为补药之王的你真的认识人参的价值?
- storyboard约束的优先级问题
- 关于UIScrollView的约束问题
- mysql建表外键约束的问题
- 约束满足问题的介绍
- oracle延时约束的问题
- 关于数据库 约束或主外键约束的插入失败问题
- 给没有"方向感"的人参考
- 回顾 Exchange 2007 SCC 安装-供需要的人参考!
- php安全篇值过滤用户输入的人参数
- 国医中药,人参神秘而又独特的地位
- 人参娃
- Oracle 10g删除主键约束后无法删除唯一约束索引问题的模拟与分析
- 第三章第十题
- 《Linux 多线程服务端编程》出了多看电子版,繁体版在台湾上市
- 黑马程序员----objective-C 面向对象三大基石之封装
- java.lang.RuntimeException: ImageLoader must be init with configuration before using的解决方法
- nyoj题目457:大小写互换
- 受约束的10人参赛问题
- 猫猫学IOS(二十三)UI之控制器管理
- 【SQL心得】:在含有GROUP BY的SELECT语句中如何显示COUNT()为0的结果
- NGUI制作技能冷却效果
- UIWindow全部API学习。
- code review
- 简单的servlet程序实例
- 补充HashSet集合hashCode和equals的重写,保证元素的不重复
- 第六周项目2我的数组类