• <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 © 李東亮

            999久久久国产精品| 一日本道伊人久久综合影| 人妻无码αv中文字幕久久琪琪布| 无码八A片人妻少妇久久| 色婷婷综合久久久久中文一区二区 | 97香蕉久久夜色精品国产| 久久久久波多野结衣高潮| 久久精品人成免费| 久久夜色撩人精品国产小说| 97精品伊人久久大香线蕉| 国产精品久久久久影院嫩草| 久久久综合香蕉尹人综合网| 色8久久人人97超碰香蕉987| 国产精品美女久久久久AV福利 | 97久久精品无码一区二区天美| 国产成人无码精品久久久免费| 漂亮人妻被中出中文字幕久久| 精品久久人妻av中文字幕| 久久涩综合| 国产巨作麻豆欧美亚洲综合久久| 99久久做夜夜爱天天做精品| 久久香蕉国产线看观看乱码| av色综合久久天堂av色综合在| 亚洲国产精品久久| 久久99精品久久久久久久不卡| 久久天天躁夜夜躁狠狠躁2022| 久久99国产精品二区不卡| 一本久久a久久精品vr综合| 久久人人爽人人爽AV片| 91精品国产综合久久四虎久久无码一级| 精品一二三区久久aaa片| 久久九九久精品国产免费直播| 国产69精品久久久久99尤物| 999久久久无码国产精品| 精品国际久久久久999波多野| 久久精品中文无码资源站| 久久这里只精品99re66| 久久午夜福利无码1000合集| 亚洲国产综合久久天堂| 久久久午夜精品福利内容| 国内精品伊人久久久久妇|