数学问题和狼追兔问题

来源:互联网 发布:指纹充电下载软件 编辑:程序博客网 时间:2024/05/17 22:24
数据结构算法之数学问题和狼追兔问题,java还没学完这里就用c++实现,不难请看代码。
//该程序简单实现4个数能组成多少个不同的三位数(不能重复),并且输出这些数。#include "stdafx.h"#include<iostream>using namespace std;int main(){int bw,sw,gw;int count=0;for(bw=1;bw<=4;bw++){for(sw=1;sw<=4;sw++){if(sw!=bw)//若十位不等于百位则可以继续放个位,否则+1继续判断(这里的if循环不需要else,因为不满足就递进+1,不需要执行其他语句,而且这里不满足情况不是break跳出循环而是递+1判断下一个数){for(gw=1;gw<=4;gw++){if((gw!=sw)&&(gw!=bw))//若个位不等于百位和十位时候,才可以放进去,否则继续+1判断{cout<<bw<<" "<<sw<<" "<<gw<<""<<endl;count++;}}}}}cout<<"总共有"<<count<<"种"<<endl;system("pause");return 0;}

//狼追兔就是,兔子躲在一个环形洞中,狼去洞里面找,狼的找完第一个洞,就会在第2洞找,然后会在第4洞找,下次在第7个洞找,即每次都是在n-1个环形洞中找兔子,其中有几个洞无论狼找不遍都永远找不到,我们就是利用循环求出这个洞#include "stdafx.h"#include<iostream>using namespace std;//开始设每个洞都为0,狼找过的洞赋值为1void safehole(int *p,const int count){int i,pos=0;for(i=1;i<=count;i++)p[i]=0;p[pos]=1;for(int j=2;j<5000;j++)//这里j设为5000尽可能说明狼找的次数多{pos=(pos+j)%count;//关键就是循环判断的步长,即狼下一个洞的位置为多少,一般环形的都是步长%总长度p[pos]=1;//每次找过洞赋值为1}}int main(){int count;//count表示洞的个数int a[20]={0};cout<<"这里有几个洞"<<endl;cin>>count;safehole(a,count);//洞值为1必死,为0即安全for(int i=0;i<count;i++){if(a[i]!=0)cout<<"躲在"<<i+1<<"必死"<<" ";elsecout<<"\n"<<i+1<<"这洞不会被狼抓到"<<endl;}system("pause");return 0;}


这两个程序比较有意思,代码中我尽量详细解释,还是一句加油!学java去了哈哈

0 0