• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ZOJ1622 SWITCH解題報告

            Posted on 2010-09-20 09:31 李東亮 閱讀(332) 評論(0)  編輯 收藏 引用

             

            SWITCH

            題目描述如下:

            There are N lights in a line. Given the states (on/off) of the lights, your task is to determine at least how many lights should be switched (from on to off, or from off to on), in order to make the lights on and off alternatively.
            Input
            One line for each testcase.
            The integer N (1 <= N <= 10000) comes first and is followed by N integers representing the states of the lights ("1" for on and "0" for off).
            Process to the end-of-file.
            Output
            For each testcase output a line consists of only the least times of switches.
            Sample Input
            3 1 1 1
            3 1 0 1
            Sample Output
            1
            0

            分析:該題看似簡單但卻隱藏著陷阱,題目要求尋找的是最少的切換數,故從第二盞燈開始判斷處理得出的結論是不一定正確的。通過分析可以發現該題其實只存在兩種情況:奇數位置的燈開著或者偶數位置的燈開著。這樣可以直觀的處理該題:取奇數位置燈開著需要切換燈狀態數與偶數位置燈開著需切換燈狀態數的較小值。這樣的話需要掃描兩邊燈的狀態數組,開銷較大。進一步分析,設a為奇數位置的燈開著需要切換的燈數,b為偶數位置燈開著需要切換的燈數。其實a+b=n。這樣本題就只需要掃描一遍數組,且進一步優化后存儲燈狀態的數組也可以省了。具體代碼如下:

             

             1#include <stdio.h>
             2#include <stdlib.h>
             3
             4int main(void)
             5{
             6    int n;
             7    int prev;
             8    int tmp;
             9    int cnt;
            10    int a;
            11    while (scanf("%d"&n) == 1)
            12    {
            13        prev = -1;
            14        cnt = 0;
            15        a = n;
            16        while (n--)
            17        {
            18            scanf("%d"&tmp);
            19            if (tmp == prev)
            20            {
            21                if (tmp == 0)
            22                {
            23                    prev = 1;
            24                }

            25                else
            26                {
            27                    prev = 0;
            28                }

            29                ++cnt;
            30                continue;
            31            }

            32            prev = tmp;
            33        }

            34        if (cnt > a/2)
            35            cnt = a-cnt;
            36        printf("%d\n", cnt);
            37    }

            38    return 0;
            39}

            posts - 12, comments - 1, trackbacks - 0, articles - 1

            Copyright © 李東亮

            久久91精品国产91| 国产精品热久久无码av| 色8久久人人97超碰香蕉987| 国产精品天天影视久久综合网| 久久香蕉国产线看观看99| 久久久久亚洲精品天堂久久久久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久九九有精品国产23百花影院| 婷婷综合久久狠狠色99h| 国产精品久久久久久久久软件| 2021精品国产综合久久| 三级韩国一区久久二区综合| 国产精品视频久久久| 免费精品国产日韩热久久| 久久综合久久综合久久综合| 久久精品国产日本波多野结衣 | 国产精品99久久久久久猫咪| 亚洲精品美女久久777777| 久久久久无码精品| 亚洲国产一成人久久精品 | 少妇高潮惨叫久久久久久| 91久久九九无码成人网站| 亚洲中文字幕无码一久久区| 午夜精品久久影院蜜桃| 久久精品一区二区| 久久99国产亚洲高清观看首页| 亚洲精品无码成人片久久| 久久99久久99精品免视看动漫| 久久av免费天堂小草播放| 欧美激情精品久久久久久久| 国产成人久久精品麻豆一区 | 亚洲中文字幕久久精品无码喷水| 久久久久人妻一区精品果冻| 久久强奷乱码老熟女| 欧洲性大片xxxxx久久久| 久久久网中文字幕| 亚洲乱码日产精品a级毛片久久 | 2022年国产精品久久久久| 久久久久亚洲AV片无码下载蜜桃| 亚洲中文字幕无码久久综合网| 亚洲中文字幕无码久久2017|