(3)三色球问题
问题及代码
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 10 月 27 日 * 版 本 号:v1.0 * * 问题描述:一个口袋有3个红球,3个白球,6个黑球。取出8个球,求不同的颜色搭配。 * 输入描述:没有输入。 * 程序输出:方案。 */ #include <iostream> using namespace std; int main() { int i,j,m,count=0; cout <<"红、白、黑球的个数为:\n"; for(i=0; i<=3; i++) for(j=0; j<=3; j++) for(m=0; m<=6; m++) if(i+j+m==8) { ++count; cout <<count<<":"<<" "<<i<<" "<<j<<" "<<m<<endl; } return 0; }
(4)委派任务
问题及代码
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 10 月 27 日 * 版 本 号:v1.0 * * 问题描述:要求在ABCDEF六个队员中选人执行任务,但有一些限制条件。 * 输入描述:没有输入。 * 程序输出:方案。 */ #include <iostream> using namespace std; int main() { int a,b,c,d,e,f; cout <<"应该让以下这些人去:"<<endl; for(a=0; a<=1; a++) for(b=0; b<=1; b++) for(c=0; c<=1; c++) for(d=0; d<=1; d++) for(e=0; e<=1; e++) for(f=0; f<=1; f++) if(a+b>=1&&(a+d)!=2&&a+e+f==2&&(b+c==0||b+c==2)&&c+d==1&&(d+e==0||d==1)) { if(a==1) cout <<"A"; if(b==1) cout <<"B"; if(c==1) cout <<"C"; if(d==1) cout <<"D"; if(e==1) cout <<"E"; if(f==1) cout <<"F"; } return 0; }
(5)求加法式中符号代表的数
问题及代码
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 10 月 27 日 * 版 本 号:v1.0 * * 问题描述:求加法式中各个符号所代表的数字,不能重复。 * C * 学 C * 要 学 C * + 都 要 学 C * ———————————— * 2 0 0 8 * 输入描述:没有输入。 * 程序输出:方案。 */ #include <iostream> using namespace std; int main() { int idou,iyao,ixue,ic,icount=0; for(idou=0; idou<=9; idou++) for(iyao=0; iyao<=9; iyao++) for(ixue=0; ixue<=9; ixue++) for(ic=0; ic<=9; ic++) if(((idou-iyao)*(idou-ixue)*(idou-ic)*(iyao-ixue)*(iyao-ic)*(ixue-ic))!=0&&idou*1000+iyao*200+ixue*30+ic*4==2008) { ++icount; cout <<"方案"<<icount<<":"<<"都代表"<<idou<<" 要代表"<<iyao<<" 学代表"<<ixue<<" C代表"<<ic<<endl; } return 0; }
(6)求谁是小偷
问题及代码
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 10 月 27 日 * 版 本 号:v1.0 * * 问题描述:A说自己不是小偷,B说C是小偷,C说D是小偷,D说自己不是小偷,求谁是小偷。 * 输入描述:没有输入。 * 程序输出:小偷。 */ #include <iostream> using namespace std; int main() { int a,b,c,d; (a-b)*(a-c)*(a-d)*(b-c)*(b-d)*(c-d)!=0; cout <<"求谁是小偷"<<endl; for(a=0; a<=1; a++) for(b=0; b<=1; b++) for(c=0; c<=1; c++) for(d=0; d<=1; d++) { if(a==1&&c==1&&d==1&&d==0) cout <<"A是小偷"; if(a==0&&c==0&&d==1&&d==0) cout <<"B是小偷"; if(a==0&&c==1&&d==0&&b==0) cout <<"C是小偷"; if(a==0&&c==1&&d==1&&d==0&&c==0) cout <<"D是小偷"; } return 0; }
(7)求等式中的数字
问题及代码
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 10 月 28 日 * 版 本 号:v1.0 * * 问题描述:求等式[※×(※3+※)]的平方=8※※9中※依次所代表的数字。 * 输入描述:没有输入。 * 程序输出:方案。 */ #include <iostream> using namespace std; int main() { int a,b,c,d,e; cout <<"求等式[※×(※3+※)]的平方=8※※9中※依次所代表的数字"<<endl; cout <<"依次所代表的数字为"<<endl; for(a=1; a<=9; a++) for(b=1; b<=9; b++) for(c=1; c<=9; c++) for(d=1; d<=9; d++) for(e=1; e<=9; e++) if((a*(b*10+3+c))*(a*(b*10+3+c))==8*1000+d*100+e*10+9) { cout <<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e; } return 0; }
(7)拓展:求等式中的数字及运算符
问题及代码
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 10 月 27 日 * 版 本 号:v1.0 * * 问题描述:求等式[※×(※3○※)]的平方=8※※9中※依次所代表的数字,○所代表的运算符。 * 输入描述:没有输入。 * 程序输出:方案。 */ #include <iostream> using namespace std; int main() { int a,b,c,d,e; cout <<"求等式[※×(※3○※)]的平方=8※※9中※依次所代表的数字,○所代表的运算符"<<endl; cout <<"依次所代表的数字为"<<endl; for(a=1; a<=9; a++) for(b=1; b<=9; b++) for(c=1; c<=9; c++) for(d=1; d<=9; d++) for(e=1; e<=9; e++) if((a*(b*10+3+c))*(a*(b*10+3+c))==8*1000+d*100+e*10+9) { cout <<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl; cout <<"运算符是加号"; } if((a*(b*10-3+c))*(a*(b*10-3+c))==8*1000+d*100+e*10+9) { cout <<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl; cout <<"运算符是减号"; } if((a*((b*10-3)*c))*(a*((b*10-3)*c))==8*1000+d*100+e*10+9) { cout <<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl; cout <<"运算符是乘号"; } if((a*((b*10-3)/c))*(a*((b*10-3)/c))==8*1000+d*100+e*10+9) { cout <<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl; cout <<"运算符是除号"; } return 0; }
学习感悟:除了倒数第二个的解法我不太明白外,其余的感觉还行。。。。。精简一下或许更好