• <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解題報(bào)告

            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

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

             

             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}

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


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

            Copyright © 李東亮

            久久99精品久久久久久| 国产欧美久久久精品影院| 久久久久久久97| 99久久精品国内| 国产精品无码久久四虎| 四虎国产精品成人免费久久| 一级a性色生活片久久无少妇一级婬片免费放 | 久久AAAA片一区二区| 久久亚洲精品国产亚洲老地址 | 久久综合综合久久狠狠狠97色88| 狠狠色综合网站久久久久久久| 久久青青草视频| 国产叼嘿久久精品久久| 久久久精品国产免大香伊| 色婷婷综合久久久中文字幕 | 婷婷久久综合九色综合九七| 久久午夜羞羞影院免费观看| 久久久久亚洲AV无码去区首| 国产91色综合久久免费分享| 亚洲精品乱码久久久久久蜜桃| 91久久精一区二区三区大全| 久久午夜无码鲁丝片秋霞| 久久激情五月丁香伊人| 久久婷婷五月综合97色一本一本| 一本色道久久88综合日韩精品| 国产免费久久久久久无码| 久久精品国产亚洲av高清漫画| 国产成人综合久久精品红| 精品久久人人爽天天玩人人妻| 国产精品久久久久久搜索| 精品人妻伦九区久久AAA片69| 青青青青久久精品国产h久久精品五福影院1421| 久久综合给合久久狠狠狠97色69 | 热99re久久国超精品首页| 久久久噜噜噜www成人网| 久久久久久久久波多野高潮| 日韩电影久久久被窝网| 欧美激情精品久久久久久| 久久天天日天天操综合伊人av| 99久久精品费精品国产| 久久精品中文字幕有码|