查看: 1034|回復: 0
打印 上一主題 下一主題

[TOJ] 123 Fenestration

[複製鏈接]
  • TA的每日心情
    鬱悶
    2015-2-10 21:23
  • 簽到天數: 1 天

    [LV.1]初來乍到

    12

    主題

    69

    帖子

    779

    積分

    高級會員

    Rank: 4

    積分
    779

    台南一中資訊社

    跳轉到指定樓層
    樓主
    發表於 2014-8-19 18:45:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    本帖最後由 amoshuangyc 於 2014-8-19 18:55 編輯

    這題很簡單,歸納一下題目,就可以發現解法:
    對於每個內層的「空格」,判斷其左前方、正前方、右前方(如果這些位置存在的話,例如有可能內層的空格在最右邊,這個空格就沒有右前方。)有沒有「空格」?若有一個以上,則蚊子可以進來,若一個空格也沒有,則蚊子進不來。

    當然你也可能將內層、外層反過來判斷,即:對於每個外層的「空格」,判斷其左後方、正後方、右後方…………這樣不影響結果。

    以下程式碼使用 string 來存資料,flag 代表蚊子進不進得來。一開始是進不來(flag = false),若那三個位置有任何一個空格,就可以把 flag 改成 true。
    [C++] 純文本查看 復制代碼
    #include <iostream>
    
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        
        int N;
        cin >> N;
        
        string in, out;
        cin >> out >> in;
        
        bool flag = false;    
        for (int i=0; i<N; i++)
            if (in[i] == '0') {
                if (i-1 >= 0 && out[i-1] == '0') {
                    flag = true;
                    break;
                }
                if (out[i] == '0') {
                    flag = true;
                    break;
                }
                if (i+1 < N && out[i+1] == '0') {
                    flag = true;
                    break;
                }
            }
        
        if (flag == false)
            cout << "FENDED OFF!\n";
        else
            cout << "FENESTRATION FORTIFICATION FAILURE!\n";
        
        return 0;
    }

    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表