UVA 10935 Throwing cards away I 【数据结构】【模拟】

前端之家收集整理的这篇文章主要介绍了UVA 10935 Throwing cards away I 【数据结构】【模拟】前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

题目链接:https://vjudge.net/problem/UVA-10935


题目大意:

桌上有n张牌,从第一张牌开始,从上往下一次编号为1~n,当至少还剩下两张牌是进行以下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后,求扔掉的牌所组成的序列以及最后剩下的牌。

题目思路:

原来以为是模拟,直接上暴力,AC之后反倒想明白其实是一个队列…

致IQ == 0的我…

唯一需要注意的这么一组数据:

1

实际的输入应该是

Discarded cards:
Remaining card: 1


其实这个漏洞我是从 udebug 中发现的,udebug这道题的第一个数据很精彩,给好评~

剩下的没什么了,就是纯模拟。

代码

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. const int size = 505;
  8. int n,poker[size];
  9.  
  10. int main() {
  11. // freopen("10935.out","w",stdout); (udebug)
  12. while( scanf("%d",&n),n ) {
  13. int beg = 1,end = n;
  14. memset(poker,sizeof(poker));
  15. printf("Discarded cards:");
  16. for ( int i = 1; i <= n; i++ ) poker[i] = i;
  17. if( beg != end ) {
  18. while( beg < end-1 ) {
  19. printf(" %d,",poker[beg]);
  20. poker[++ end] = poker[beg+1];
  21. beg += 2;
  22. // printf(" %d %d\n",beg,end);
  23. }
  24. printf(" %d",poker[beg]);
  25. }
  26.  
  27. printf("\nRemaining card: %d\n",poker[end]);
  28. }
  29.  
  30. return 0;
  31. }

猜你在找的数据结构相关文章