zoukankan      html  css  js  c++  java
  • -UVa10935题:Trowing cards away1解答及简单分析

                           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("
    Remaining card: %d
    ",a[head]);
    26     }
    27     return 0;
    28 }
  • 相关阅读:
    项目总结
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    浅谈Vue与swiper轮播图框架结合小案例
  • 原文地址:https://www.cnblogs.com/x512149882/p/4653644.html
Copyright © 2011-2022 走看看