解题思路:
数组模拟链表进行操作
注意事项:
注意删除写法(基础,多练)
参考代码:
#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 人评分
Pascal三角 (C语言代码)浏览:1189 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:531 |
1128题解(返回值为数组的情况)浏览:474 |
图形输出 (C语言代码)浏览:945 |
生日日数 (C语言代码)浏览:1502 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:599 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:739 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:393 |
整数分类问题 为什么输出总是数字8啊浏览:442 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:603 |