#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct lnode
{
int pos;
struct lnode *next;
} lnode;
/**
* 构建循环链表&&循环遍历
*/
void create_ring(lnode **root, int loc, int n)
{
lnode *pre, *current, *new;
current = *root;
pre = NULL;
while (current != NULL) {
pre = current;
current = current->next;
}
new = (lnode *)malloc(sizeof(lnode));
new->pos = loc;
new->next = current;
if (pre == NULL) {
*root = new;
} else {
pre->next = new;
}
// 循环链表
if (loc == n) {
new->next = *root;
}
}
/**
* 约瑟夫环
*/
void kickoff_ring(lnode *head, int p)
{
int i;
lnode *pre, *pcur;
pre = pcur = head;
while (pcur->next != pcur) {
for (i = 1; i < p; i ++) {
pre = pcur;
pcur = pcur->next;
}
printf("%d ", pcur->pos);
pre->next = pcur->next;
free(pcur);
pcur = pre->next;
}
printf("%d\n", pcur->pos);
free(pcur);
}
void print_ring(lnode *head)
{
lnode *cur;
cur = head;
while (cur->next != head) {
printf("%d ", cur->pos);
cur = cur->next;
}
printf("%d\n", cur->pos);
}
int main()
{
int i, p, n;
lnode *head;
while (scanf("%d %d", &n, &p) != EOF) {
// 构建循环链表
for (i = 1, head = NULL; i <= n; i ++)
create_ring(&head, i, n);
// 约瑟夫环
if (p != 1)
kickoff_ring(head, p);
else
print_ring(head);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, index, p, n, remain, delete[3001], flag[3001] = {0};
while (scanf("%d %d", &n, &p) != EOF) {
remain = n;
index = 0;
while (remain >= 1) {
for (i = 0; i < n; i ++) {
if (flag[i] == 0) {
// 报数
index ++;
// 报p者退出圈外
if (index == p) {
// 退出圈外
flag[i] = 1;
// 重新报数
index = 0;
delete[remain - 1] = i + 1;
remain --;
}
}
}
}
// 输出每个退出人的序号
for (i = n - 1; i >= 0; i --) {
if (i == 0) {
printf("%d\n", delete[i]);
} else {
printf("%d ", delete[i]);
}
}
}
return 0;
}
#include <stdio.h>
int main(void)
{
int i, n, m, last;
while (scanf("%d", &n) != EOF && n != 0) {
// 接收报数
scanf("%d", &m);
// 约瑟夫环问题
for (i = 2, last = 0; i <= n; i ++) {
last = (last + m) % i;
}
printf("%d\n", last + 1);
}
return 0;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有