php狼找兔子问题算法,算法 狼找兔子问题

#include//定义结点

struct point

{

int num ; //当前结点所在位置,从0开始算起,依次类推

int sign ; //标志位,检查是否被查找过,0代表未被查找,1代表已经被查到过

struct point *next ;

};

int main(void)

{

int n , m; // n 代表洞 , m代表跨越查找步长

printf("please input number n and m : \n");

scanf("%d",&n);

scanf("%d",&m);

struct point *p = NULL;

struct point *s = NULL;

//循环遍历,依次创建 n 个结点

for(int i = 0 ; i < n ; i++)

{

if(i == 0) //创建第一个结点

{

p = (struct point * )malloc(sizeof(struct point)) ;

p->num = i;

p->sign = 0;

p->next = p;

}

else //在第一个结点基础上,继续创建余下结点

{

s = (struct point * )malloc(sizeof(struct point)) ;

s->num = i;

s->sign = 0;

s->next = p->next ;

p->next = s;

p = s;

}

}

p = p->next ; //将 p指正回归到最开始那个结点

struct point *q = NULL;

q = p ;

int count = 0;

//开始遍历查找

while(q->sign == 0)

{

q->sign = 1;

count++; //统计找到结点数

int j = 0;

while( j < m) //向前推m步

{

q = q->next;

j++; //控制步长

}

}

if(count < n) //如果count小于 n ,说明有可躲藏点

{

printf("yes, the rabbit have chance of survival, it can hide in the following position:\n");

int j = 0 ;

while( j < n) //输出标志位sign为0的所有结点

{

if(p->sign == 0)

{

printf("%d\t",p->num);

}

p = p->next;

j++;

}

printf("\n");

}

else

{

printf("no, the rabbit had no chance of survival\n");

}

//开始销毁链表

q = p->next ;

count = 0;

while(count < n-1)

{

free(p);

p = q;

q= p->next;

count++;

}

free(p);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值