C++第11周项目2(7)参考——都要学C

原创 2012年11月09日 19:05:26

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目2:穷举法解决组合问题】先阅读例题,领会穷举法(意为“穷尽式列举”,也称枚举)的思想,然后自行选题进行解决,掌握这种程序设计的一般方法。

任务:利用穷举的方法解决下面的问题(选做一道即算完成任务,其他可以抽时间自由安排,多做会使你更聪明。)

7)在下面的加法算式中,不同的符号代表不同的数字,相同的符号代表相同的数字。请设计程序求出"都、要、学、C"4个符号分别代表的数字。

              C
          学  C
      要  学  C
+ 都  要  学  C
________________
  2   0   0   8

提示:让计算机解奥数题。穷举"都、要、学、C"4个符号分别代表的数字(从09),然后进行组合,如果组合起来符合规则(不同的符号代表不同的数字,相同的符号代表相同的数字,且使等式成立),则为正解。

未优化前的代码 

#include <iostream>  
using namespace std;  
int main()  
{ 
	int dou,yao,xue,c,s;//变量这样取,比用i,j,p,q之类的要清晰得多
	for(dou=1;dou<3;dou++)
		for(yao=0;yao<10;yao++)
			for(xue=0;xue<10;xue++)
				for(c=0;c<10;c++)
					if((dou-yao)*(dou-xue)*(dou-c)*(yao-xue)*(yao-c)*(xue-c)!=0)//一个技巧:表示两两不同可以这样做
					{
						s=4*c+3*xue*10+2*yao*100+dou*1000;
						if(2008==s) 
							cout<<"都:"<<dou<<" 要:"<<yao<<" 学:"<<xue<<" C:"<<c<<endl;
					}
	return 0;
}  

运行结果



效率更高的解法 

#include <iostream>  
using namespace std;  
int main()  
{ 
	int dou,yao,xue,c,s;
	for(dou=1;dou<3;dou++)
		for(yao=0;yao<10;yao++)
		{
			if(dou==yao) continue;//“都”和“要”的取值如果相同了,将不再考虑另外两字的取值,效果可观
			for(xue=0;xue<10;xue++)
			{
				if(xue==yao||xue==dou) continue;  //理由同上
				for(c=0;c<10;c++)
					if((dou-c)*(yao-c)*(xue-c)!=0)
					{
						s=4*c+3*xue*10+2*yao*100+dou*1000;
						if(2008==s) 
							cout<<"都:"<<dou<<" 要:"<<yao<<" 学:"<<xue<<" C:"<<c<<endl;
					}
			}
		}
	return 0;
}


视频:http://www.tudou.com/programs/view/InJLdkTDKSQ/


版权声明:本文为博主原创文章,未经博主允许不得转载。

零基础学Visual C++ 电子教程/随书光盘

中文名称:零基础学Visual C++ 电子教程/随书光盘资源类型:ISO版本:电子教程/随书光盘发行时间:2007年12月地区:大陆语言:普通话简介:出版社 : 机械工业出版社作者  : 郑慧,范忠...
  • mynote
  • mynote
  • 2008年01月24日 09:01
  • 843

第11周项目7

#include              //预处理指令。   #include                 //要使用数学符号。   using namespace std;     ...
  • aczhangweijian
  • aczhangweijian
  • 2014年11月10日 16:27
  • 519

17周项目五(7)。“都要学c”

上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我的程序:/* Copyright (c) 2013, 烟台大学计算机学院 * All rights ...
  • u012370487
  • u012370487
  • 2013年12月22日 16:04
  • 752

C++第11周项目2(2)参考——换分币

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565【项目2:穷举法解决组合问题】先阅读例题,领会穷举法(意为“穷尽式列举”,也...
  • sxhelijian
  • sxhelijian
  • 2012年11月09日 11:27
  • 2566

第9周 项目6-6 “都要学C”

问题及代码:/*。 *Copyright(c)2014,烟台大学计算机学院 *All right reserved, *文件名:test.cpp *作者:liu_feng_zi_ *完成日期...
  • liu_feng_zi_
  • liu_feng_zi_
  • 2014年10月31日 16:37
  • 235

第9周项目6“都要学c”

问题及代码:   运行结果: 知识点总结: 学习心得:
  • MIKASA3
  • MIKASA3
  • 2014年10月27日 14:42
  • 666

Coursera-吴恩达-机器学习-(第11周笔记)应用实例:photo OCR

此系列为 Coursera 网站Andrew Ng机器学习课程个人学习笔记(仅供参考) 课程网址:https://www.coursera.org/learn/machine-learning ...
  • malele4th
  • malele4th
  • 2018年01月16日 20:07
  • 44

机器学习-学习笔记 学习总结归纳(第十一周)

总结归纳假设空间归纳从特殊到一般的“泛化”过程, 即从具体的事实归结出一般性规律。演绎从一般到特殊的“特化”过程, 即从基础原理推演出具体状况。归纳学习(概念学习(概念形成))记住训练样本, 就是所谓...
  • linglian0522
  • linglian0522
  • 2017年08月24日 17:12
  • 199

第11周-项目2

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: obj...
  • ning847273990
  • ning847273990
  • 2013年05月21日 22:07
  • 632

第11周项目2

/* 烟台大学计算机学院 文件名称:xiangmu.cpp 作者:于琛 完成日期:2017年11月12日 问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法:  ...
  • fhjdhhshdh
  • fhjdhhshdh
  • 2017年11月12日 11:13
  • 56
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++第11周项目2(7)参考——都要学C
举报原因:
原因补充:

(最多只允许输入30个字)