范沐垚


私信TA

用户名:dotcpp0614554

访问量:3820

签 名:

好大喜功

等  级
排  名 157
经  验 7001
参赛次数 0
文章发表 102
年  龄 18
在职情况 学生
学  校 看今夜 小楼灯宴
专  业 尽是良辰美眷

  自我简介:

沽名钓誉

解题思路:    

                        数组模拟链表进行操作  

注意事项:
                        注意删除写法(基础,多练)
参考代码:

#include<iostream>
using namespace std;
const int N=10010;
int ne[N],fa[N];
int n;
void dfs(int s,int t)
{
    if(s==3)
    {
        fa[ne[t]]=fa[t];         //报数到3时候 删除掉该元素
        ne[fa[t]]=ne[t];
        n--;
        s=0;
    }
    if(n==1)
    {
        cout<<ne[t]<<endl;               //剩下最后一个人时候 输出
        return;
    }
    dfs(s+1,ne[t]);
}
int main(void)
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        if (i == n)
            ne[i] =1;                 //ne是下一个人
        else
            ne[i] = i + 1;
        if(i==1)
            fa[i]=n;              //fa是上一个人
        else
            fa[i]=i-1;
    }
    dfs(1,1);
    return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区