简化版 #include<iostream> using namespace std; int shu(int n){ int a[n]={0}; int i=0,cnt=0,cnt2=0; for(;cnt2<n;i=(i!=n-1)?i+1:0){ if(a[i]==0) {a[i]=(++cnt%3==0)?1:0;cnt2+=(cnt%3==0)?1:0;} } return (i==0?n:i); } int main() { int n; while(cin>>n) cout<<shu(n)<<endl; return 0; }
#include<iostream> using namespace std; int shu(int n){ int a[n]={0}; for(int i=0,cnt=0,cnt2=0;cnt2<n-1;i=(i!=n-1)?i+1:0){ if(a[i]==0) { a[i]=(++cnt%3==0)?1:0; cnt2+=(cnt%3==0)?1:0; } } int k=0; for(int i=0;i<n;i++) k=(a[i]==0)?i:k; return k+1; } int main() { int n; while(cin>>n) cout<<shu(n)<<endl; return 0; }
最后的最优算法有问题,当n=3的时候它算的是1,而实际是2才对
旋转跳舞我闭着眼 2023-07-31 16:21:38 |
对不起,我又检查了几遍,发现算法没问题,是我的问题,实在不好意思
q.push(q.front()); //排至队尾 q.pop(); queue中,这两句什么意思,是把对头的数,在对尾又加了一个,再删去吗,有啥意义呢
这个bug未免太机车了啦 2023-03-20 14:13:17 |
意义就是,在报数不是0的时候,这个编号进入最后一个人的下一位进行后续报数
pointer 2023-03-20 21:23:35 |
谢谢哥哥~
#include<stdio.h> void Num(int n); int main() { int n; scanf("%d",&n); Num(n); } void Num(int n) { int num; if(n%3==0) { num=n-1; } else { num=n; } printf("%d",num); }
kysa 2023-09-15 16:41:32 |
兄弟,你这就转了一圈就不转了是吧,666,改题大法
能详细解释一下STL算法嘛?草草几行代码都代表着什么意思呢?
闹市眠 2021-12-17 16:11:18 |
最后那种不是stl算法,stl是指上面那个用了stl封装的队列,最下面这个是递归的思路。
for(int i=0;i<3;i++){if(++s>n)s=1;if(visit[s])i--;}这段代码啥意思啊
数组输出 (C语言代码)--此题的题目描述有问题浏览:1844 |
简单的a+b (C语言代码)浏览:641 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1090 |
用筛法求之N内的素数。 (C语言代码)浏览:685 |
用筛法求之N内的素数。 (C++代码)浏览:754 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:727 |
A+B for Input-Output Practice (V) (C语言代码)浏览:497 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:438 |
Tom数 (C语言代码)浏览:758 |
printf基础练习2 (C语言代码)浏览:547 |