数学问题和狼追兔问题

数据结构算法之数学问题和狼追兔问题,java还没学完这里就用c++实现,不难请看代码。
//该程序简单实现4个数能组成多少个不同的三位数(不能重复),并且输出这些数。
#include "stdafx.h"
#include

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<

数学问题和狼追兔问题_第1张图片

//狼追兔就是,兔子躲在一个环形洞中,狼去洞里面找,狼的找完第一个洞,就会在第2洞找,然后会在第4洞找,下次在第7个洞找,即每次都是在n-1个环形洞中找兔子,其中有几个洞无论狼找不遍都永远找不到,我们就是利用循环求出这个洞
#include "stdafx.h"
#include

using namespace std;

//开始设每个洞都为0,狼找过的洞赋值为1
void 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<<"这里有几个洞"<>count;
	safehole(a,count);
	//洞值为1必死,为0即安全
	for(int i=0;i

数学问题和狼追兔问题_第2张图片

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

你可能感兴趣的:(初学c++,数据结构算法)