码迷,mamicode.com
首页 > Windows程序 > 详细

-UVa10935题:Trowing cards away1解答及简单分析

时间:2015-07-17 11:28:10      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

                       Trowing cards away

原题题意:

    有n张牌,从第一张牌(位于最上面head的牌)开始,从上往下一次编号为1到n.当至少还剩两张牌的时候进行以下操作:将第一张牌扔掉,然后将新的第一张牌放到整叠牌的最后(变为tail)。   输如每行包含一个n,输出每次扔掉的牌及最后剩下的牌。要求:n<=50

题意分析及程序简析

     定义一个至少2n-1大小的数组, 为避免出错可将数组空间稍微开大点。设置一个变量head和tail下标记录输入数组的第一个和最后一个数据,每次将其往后移一个位置指向后一个数组元素。

案列输出如下:

intput:

7

output:

Discarded Cards:1,3,5,7,4,2

Remaining Cards:6

 

 

程序代码如下:

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int a[1000];
 6 
 7 int main()
 8 {
 9     int n;
10     while (cin >> n && n) 
11    {
12         for (int i = 0; i <= n; ++ i)
13             a[i] = i;
14 
15         int head = 1,tail = n, flag = 1;
16         printf("Discarded cards:");
17         while (head < tail) 
18         {
19             if (!flag)
20                 printf(",");
21             printf(" %d",a[head ++]);
22             a[++ tail] = a[head ++];
23             flag = 0;
24         }
25         printf("\nRemaining card: %d\n",a[head]);
26     }
27     return 0;
28 }

 

-UVa10935题:Trowing cards away1解答及简单分析

标签:

原文地址:http://www.cnblogs.com/x512149882/p/4653644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!