【4.7日题解】——约瑟夫问题(c代码表述)

简介: 【4.7日题解】——约瑟夫问题(c代码表述)

今日份水题开始。希望有想要提高的同学跟我们一起来刷题0.0

4.7日每日一题——约瑟夫问题


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)

⏳全文大约阅读时间: 20min


全文目录

☘前言☘

解题思路

📑写在最后

P1996 约瑟夫问题


解题思路

搞个链表直接模拟就好了,没那么复杂。


#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
    int data;
    struct node *next;
}NODE;
int main(){
    int m,n;
    scanf("%d %d",&m, &n);
    NODE head;      //头节点
    head.next = NULL;
    NODE *first;
    for(int i = 0;i < m;++i){   //建立链表
        NODE *tmp = (NODE *)malloc(sizeof(NODE));
        if(!i) first = tmp;
        tmp->data = m - i;
        tmp->next = head.next;//头插法
        head.next = tmp;
    }
    NODE *p = head.next,*q;
    if(n == 1){
        while(p){printf("%d ",p->data);p=p->next;}
        return 0;
    }
    first->next = head.next;//循环链表建立完成 0.0
    while(p != &head){
        for(int i = 0;i < n - 2;++i)    p = p->next;
        printf("%d ",p->next->data);
        if(p->next == p) break;
        q = p->next;
        p->next = p->next->next;
        p=p->next;
        free(q);
    }
    return 0;
}


挺好,不改了,不过看群友有拿数组模拟链表的,太强了。加油呀!


📑写在最后

今天就这样,明日再见0.0


相关文章
|
7月前
|
机器学习/深度学习 算法
代码随想录Day25 回溯算法 LeetCode T51 N皇后问题
代码随想录Day25 回溯算法 LeetCode T51 N皇后问题
38 1
|
6月前
|
索引
力扣 506.相对名词 纯C解法
力扣 506.相对名词 纯C解法
|
7月前
|
算法
代码随想录Day20 回溯算法 LeetCode77 组合问题
代码随想录Day20 回溯算法 LeetCode77 组合问题
21 0
|
C语言
打家劫舍(Leetcode)动态规划c语言
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
72 0
打家劫舍(Leetcode)动态规划c语言
|
存储 C语言
C语言题解——倒置字符串(剑指Offer 第58题)
C语言题解——倒置字符串(剑指Offer 第58题)
64 0
C语言题解——倒置字符串(剑指Offer 第58题)
|
算法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
77 0
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
|
C语言
C语言题解:经典递归题目(斐波那契数列、汉罗塔问题以及青蛙跳台阶问题)
C语言题解:经典递归题目(斐波那契数列、汉罗塔问题以及青蛙跳台阶问题)
122 0
C语言题解:经典递归题目(斐波那契数列、汉罗塔问题以及青蛙跳台阶问题)
|
存储 算法 搜索推荐
八大排序算法总结+例题练习(正在不断补充...)
八大排序算法总结+例题练习(正在不断补充...)
八大排序算法总结+例题练习(正在不断补充...)
|
C语言
C语言经典递归题目 -- 青蛙跳台阶问题
C语言经典递归题目 -- 青蛙跳台阶问题
111 0
C语言经典递归题目 -- 青蛙跳台阶问题
|
C语言
C语言的三个经典题目:三步翻转法、杨氏矩阵、辗转相除法
C语言的三个经典题目:三步翻转法、杨氏矩阵、辗转相除法
104 0
C语言的三个经典题目:三步翻转法、杨氏矩阵、辗转相除法