zoukankan      html  css  js  c++  java
  • ZOJ 1171 Sorting the Photos

    1. 题目描述

    给你一叠照片,有的正面朝上,有的反面朝上,朝上的用字母U,朝下的用字母D

    可以从一个位置开始到最顶端,把这一叠拿出来,反转,然后再放回那一叠照片上面。

          试求出最少的翻转次数,使所有的照片朝向一样。

    输入格式

    第一行输入一个整数表示有组测试数据。随后是组测试数据。

    每组测试数据给出照片的张数m, 然后输入一些字符,包括‘U’表示朝上,’D’表示朝下,还有一些空格,回车

    输出格式

    对于每组测试数据输出一行,内容为使照片翻转次数尽可能少的方案数。

    每个样例之间用空行隔开

    输入样例

    1

    5
    UU D
    UU

    输出样例

    2

    2. 题目分析和算法实现

    首先分析输入,对于每个样例的输入,我采用getchar(),其中这些字符里面有用的字符就只有‘U’和‘D’,所以只要判断‘U’和’D’的个数是否到m个即可。

    思路分析:把每个连续的U或者D看成一个小整体,只要翻转同步,可以看成一张。然后从上往下依次翻,当遇到朝向不一样的照片时,我们就把上面所有的照片都反转一下即可,接着就继续往下,直到所有的朝向都一样了为止。

    所以我们只要计算朝向不一样的次数即可。而朝向不一样的次数等于小整体的个数,所以我们在输入时就直接计算这种小整体的个数S,那么答案即为S-1

    3. 问题实现及代码分析

     
    #include<stdio.h>
    #include<string.h>
    int main()
    {
          int i,j,k,t,n;
          scanf("%d",&t);
          while(t--)
          {
                scanf("%d",&n);
                int flag=0,pre=-1;//flag表示小整体的个数
                                 //pre表示之前那个小整体的朝向
                char s;
                while(n)
                {
                      s=getchar();
                      if(s=='U'||s=='D')
                      {
                            n--;//是照片,个数减一
                            if(s!=pre)//与前面的不一样,个数加一
                                      //且pre得朝向改变
                            {
                                  flag++;
                                  pre=s;
                            }
                      }
                }
                flag--;
                printf("%d
    ",flag);
                if(t)puts("");//输出中间的空行
          }
          return 0;
    }
     
    


  • 相关阅读:
    Codeforces Round #251 (Div. 2) A
    topcoder SRM 623 DIV2 CatAndRat
    topcoder SRM 623 DIV2 CatchTheBeatEasy
    topcoder SRM 622 DIV2 FibonacciDiv2
    topcoder SRM 622 DIV2 BoxesDiv2
    Leetcode Linked List Cycle II
    leetcode Linked List Cycle
    Leetcode Search Insert Position
    关于vim插件
    Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones
  • 原文地址:https://www.cnblogs.com/pangblog/p/3304127.html
Copyright © 2011-2022 走看看