• <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 李東亮 閱讀(330) 評論(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 © 李東亮

            亚洲中文字幕无码久久综合网| 亚洲国产成人久久综合一区77| 亚洲AV无码一区东京热久久| 久久久国产精品亚洲一区| 国内精品久久久久久久久| 久久精品国产亚洲av日韩| 成人久久久观看免费毛片| 久久人人爽人人爽人人片AV东京热| AAA级久久久精品无码区| 精品国产乱码久久久久久郑州公司| 中文字幕精品久久| 国产午夜精品理论片久久影视| 久久久久无码精品国产| 久久99国产精品成人欧美| 久久久一本精品99久久精品88| 久久国产精品无码网站| 国产成人香蕉久久久久 | 久久精品国产亚洲77777| 国产一区二区三精品久久久无广告| 久久婷婷人人澡人人爽人人爱| 久久综合九色综合97_久久久| 国产精品久久波多野结衣| 久久乐国产综合亚洲精品| 狠狠色丁香久久婷婷综合_中| 久久精品综合网| 国内精品伊人久久久久网站| …久久精品99久久香蕉国产| 欧美日韩久久中文字幕| 看全色黄大色大片免费久久久| 亚洲一区精品伊人久久伊人 | 欧美色综合久久久久久| 久久人人爽人人澡人人高潮AV| 99久久这里只有精品| 久久国产亚洲高清观看| 亚洲va中文字幕无码久久| 亚洲精品乱码久久久久久中文字幕| 欧洲性大片xxxxx久久久| 亚洲欧美成人久久综合中文网| 一极黄色视频久久网站| 久久无码AV一区二区三区| 久久只有这里有精品4|