穷举算法系列

      例1:鸡兔同笼36,共计100足,问鸡兔各几何?

      例2:您有朋友给你一元钱,叫你给他换一些零钱,给出你有多少种换法?

      例3:一个12位数字密码和一个6位数字、大小写英文字母,还有上档键字母(键盘橫排数字键上面符号,如@,*等)密码,哪个容易被破密?

     例4:在近期电视节目“最强大脑”世界大赛中,中国雨人周玮在二分多种时间里用心算判断2个4位数是否是质数,请你输入2个四位数,判断是否是质数要经过多少次除法运算?

     例5:小斌有一个QQ帐号密码是一个5位数。但因长时间没使用了,他将密码给忘了。但小斌生日是8月1日出生,而爸爸的生日则是9月1日,小斌记得是把同时是8l和9l的倍数用作密码,还记得这个密码的中间一位(百位数)是l。你能设计一个程序帮他找回这个密码吗?


由于个人的原因,程序可能比较长,因为我多用于美化其界面。将其美化界面的语句去掉后就可以变得相当简洁。


例1》》》》》》》》》》》》

/*****************************
***     功能:鸡兔同笼     ***
***       BY: HH           ***
*****************************/

#include<iostream>
using namespace std;
int  main()
{
	int i,j;
	cout<<"   首先我们来看一下题目!!\n\n"
		<<"   鸡兔同笼36,共计100足,问鸡兔各几何?\n\n"
		<<"   答案如下: \n\n";
	for(i=0;i<=36;i++)
		for(j=0;j<=25;j++)
		{
			if(i*2+j*4==100 && i+j==36)
			{	
				cout<<"   鸡的只数:"<<i<<"\n\n"
					<<"   兔子的只数:"<<j<<"\n\n";
			}
		}
		return 0;
}



2、一元换钱问题》》》》》》》》》》》》》》》》


/*****************************
***     功能:无聊换钱     ***
***       BY: HH           ***
*****************************/

#include<iostream>
using namespace std;
int  main()
{
	int i,j,k,l=0;
	cout<<"   朋友给你一元钱,叫你给他换一些零钱,给出你有多少种换法?\n\n"
		<<"   一块钱可以这样无聊地换零钱!!\n\n";
	for(i=0;i<=2;i++)
		for(j=0;j<=5;j++)
			for(k=0;k<=10;k++)
			{
				if(i*5+j*2+k*1==10)
				{
					l++;
					cout<<"   第"<<l<<"种方案:\n\n   ";
					cout<<k<<" 张一毛钱, "<<j<<" 张两毛钱, "<<i<<" 张五毛钱!!\n\n" 
						<<"   ******************************\n\n";  
				}
			}
			return 0;
}


 

3、密码问题

#include<iostream>   
#include<math.h>
#include<iomanip>
using namespace std;  
int  main()  
{
cout<<" 12位密码共有 "<<setprecision(20)<<pow(10,12)<<" 种情况"<<"\n\n";
cout<<"  6位密码共有    "<<pow(46,6)<<" 种情况"<<"\n\n";

return 0;
}



 



4、质数问题>>>>>>>>>>>>>>>>>>>>>>>>

/*****************************
***     功能:质数计算     ***
***       BY: HH           ***
*****************************/

#include<iostream>
using namespace std;
int  main()
{
	int num,i,j=1,k=0;
	cout<<"  我们先来看一下问题\n"
		<<"  请你输入2个四位数,判断是否是质数要经过多少次除法运算?\n\n";
	while(j<=2)		//此处用while实现输入第二个数,也可以将下面内容作为一个子函数
	{				//然后在主函数中调用即可
		cout<<"  请";		
		if(j==2)    //这里是为了第二次输入时的人性化提示
			cout<<"再";
		cout<<"输入一个4位的正整数!!\n\n"
			<<"  你输入的数为:";
		cin>>num;
		for(i=1;;i++)
		{
			num=num/2;	//判断是否为质数
			if(num==1)
			{
				cout<<"\n  一共要计算"<<i<<"次\n"
					<<"\n  该数不是质数\n\n";
				break;
			}
			if(num==0)
			{
				cout<<"\n  一共要计算"<<i<<"次\n"
					<<"\n  该数是质数\n\n";
				break;
			}
		}
		cout<<"  ********************************\n\n";
		k+=i;
		j++;
	}	
	cout<<"  总共要计算: "<<k<<" 次!!\n\n";
	return 0;
	
}


请注意两次提示输入语句的不同!!!!大家想想我是怎么实现的!!





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值