穷举算法系列

来源:互联网 发布:广发淘宝卡不送集分宝 编辑:程序博客网 时间:2024/05/29 19:20

      例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;}


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





0 0