(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;
}
运行结果:
学习感悟:除了倒数第二个的解法我不太明白外,其余的感觉还行。。。。。精简一下或许更好