致命天尊,创业广和资讯,宇智波不二 张起灵
队列基础数据结构的小练习~
现在输入一个正整数n,代表n名士兵编号1-n,开始报数,先1212报数报到2者出列;然后123123报数报到3者出列;然后又1212报数···直到只剩下小于等于3个人,输出这三个人的编号。
例:
输入:20
输出:1 7 19
代码:
1 #include <iostream> 2 using namespace std; 3 int que[10001] = { 0 }; 4 int main() 5 { 6 int n; 7 cin >> n; 8 int head = 1, tail = 1; 9 for (int i = 1; i <= n; i++) que[tail++] = i; 10 while (1) 11 { 12 n = tail - head; 13 if (tail - head <= 3)break; 14 for (int i = 1; i <= n; i++) 15 { 16 if (i % 2 == 1)que[tail++] = que[head]; 17 head++; 18 } 19 n = tail - head; 20 if (tail - head <= 3)break; 21 for (int i = 1; i <= n; i++) 22 { 23 if (i % 3 != 0)que[tail++] = que[head]; 24 head++; 25 } 26 } 27 for (int i = head; i < tail; i++) 28 { 29 cout << que[i] << " "; 30 } 31 }
结果:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论