对于本题 我感觉还是链表做起来舒服
数组也可以做 但是数组需要去控制循环 不太好控制 我之前搞了 最后看别人的实现
但是链表搞了一次就搞好了 香的嘞~
下面是代码
用单链表实现循环 再去删除要删除的人
5个人 数到2 你们在纸上画图 我就不画了 对于数组实现你们可以去牛客等上面去看看 我就不给了
#include <stdio.h>
#include<stdlib.h>
typedef struct node {int x;struct node* next;
}node;
node* buy(int i)
{node* tmp = (node*)malloc(sizeof(node));tmp->x = i;tmp->next = NULL;return tmp;
}
int main() {int n = 0, m = 0;node* tmp = NULL, * str = NULL;scanf("%d %d", &n, &m);for (int i = 1; i <= n; i++){if (tmp == NULL){tmp = buy(i);str = tmp;}else{str->next = buy(i);str = str->next;}}str->next = tmp;if (m == 1){return str->x;}while (tmp->next != tmp){for (int i = 1; i < m - 1; i++){tmp = tmp->next;}tmp->next = tmp->next->next;tmp = tmp->next;}return tmp->x;
}
香的嘞~