HDU 2209 翻紙牌遊戲 模擬

2021-09-25 06:24:55 字數 834 閱讀 6651

有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態(有些朝正,有些朝反),現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌(由正翻到反,或者有反翻到正)時,他左右兩張紙牌(最左邊和最右邊的紙牌,只會影響附近一張)也必須跟著翻動,現在給你乙個亂的狀態,問你能否把他們整理好,使得每張紙牌都正面朝上,如果可以,最少需要多少次操作。

有多個case,每個case輸入一行01符號串(長度不超過20),1表示反面朝上,0表示正面朝上。

對於每組case,如果可以翻,輸出最少需要翻動的次數,否則輸出no。

01011no1

我們從一邊開始翻牌(下面的**是從左邊開始)

對於第一張牌如果是1

可以翻它

可以翻第二張牌

不論翻第一張或者第二張,我們的目的是將第一張變為0

當第一張為0時,後續的牌如果是1就只能翻其下一張,(如果翻它會影響前面的牌)

於是後面的牌也就確定了

只需要對第一張牌翻與不翻進行兩次模擬,判斷是否能成功,如果兩種都能成功則取少的次數

#include#include#include#include#include#include#include#define ll long long

#define inf 0x3f3f3f3f

using namespace std;

int ans,ln,a[25],b[25];

void judge(int x,int v)

}if(x[ln-1]==0)

ans=min(ans,v);

}int main()

}

HDU 2209 翻紙牌遊戲(DFS)

description 有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態 有些朝正,有些朝反 現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌 由正翻到反,或者有反翻到正 時,他左右兩張紙牌 最左邊和最右邊的紙牌,只會影響附近一張 也必須跟著翻動,...

HDU 2209 翻紙牌遊戲(C C )

problem description 有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態 有些朝正,有些朝反 現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌 由正翻到反,或者有反翻到正 時,他左右兩張紙牌 最左邊和最右邊的紙牌,只會影響附近一張 ...

HDU 2209 翻紙牌遊戲 解題報告

description 有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態 有些朝正,有些朝反 現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌 由正翻到反,或者有反翻到正 時,他左右兩張紙牌 最左邊和最右邊的紙牌,只會影響附近一張 也必須跟著翻動,...