(链表解决)13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子,找出最后留在圈子里的人的序号。

版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/88085062

题目

13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子。找出最后留在圈子里的人的序号。

代码

#include <stdio.h>
#define n 13
typedef struct {
	int number;
	int nextp;
} person;

int main() {
	person link[n];
	int i,count,h;
	for(i=1; i<=n; i++) {
		if(i==n)	link[i].nextp=1;
		else
			link[i].nextp = i+1;
		link[i].number = i;
	}
	count = 0;
	h = n;
	printf("sequence that person leave the circle: \n");
	while(count<n-1) {
		i=0;
		while(i!=3) {
			h = link[h].nextp;
			if(link[h].number)	i++;
		}
		printf("%d ",link[h].number);
		link[h].number = 0;
		count++;
	}
	printf("\nThe last one is: ");
	for(i=1;i<=n;i++){
		if(link[i].number)	printf("%d",link[i].number);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/88085062
今日推荐