time limit: 1 sec memory limit: 128 mb
submit: 20 solved: 10
[submit][status][web board]
給你n張紙牌,一字排開,紙牌有正反面,正面寫有0,反面寫有1。開始的紙牌可能是一種亂的狀態(有0有1)現在你需要整理這些紙牌。但麻煩的是,每當你翻一張紙牌時,他左右兩張紙牌也必須跟著翻動,現在給你乙個亂的狀態,問你能否把他們整理好,使得每張紙牌都正面朝上,如果可以,最少需要多少次操作。
有多組資料,每組資料輸入一行01符號串(長度20以內),0表示正面朝上,1表示反面朝上。
對於每組資料,如果可以翻稱全都是正面,輸出最少需要翻動的次數,否則輸出no。
01011
no這道題就看我是翻第一張還是不翻第一張,因為第一張決定後面的紙牌順序,所以分情況討論即可1
/*
看翻不翻第一張,第一張由自己或者第二張決定
如果前一張為0就不變為1就變
*/# include # include # include using namespace std;
int main(int argc, char *argv)
else
}else
else
}s1++;
for(int i = 1; i < str1.size(); i++)
else
if(i + 1 < str1.size())
else
}s1++;
}} //從第二個開始
for(int i = 1; i < str2.size(); i++)
else
if(i + 1 < str2.size())
else
}s2++;
}} // cout << "s1 = "/ cout << "s2 = "<< s2 << endl;
// cout << flag1 << " " << flag2 << endl;
int pos = str1.find('1');
if(pos != string::npos)
pos = str2.find('1');
if(pos != string::npos)
// cout << flag1 << " " << flag2 << endl;
if(flag1)
else
}else
else
}}}
動態規劃入門
1 用 dp 做的題大多數返回值是int boolean,求max min,不能打亂原來輸入順序。2 動態規劃有兩個重要定義,乙個叫 optimal substructure 另乙個叫 overlap subproblem 各種排序 tree 類問題中,都會用到 divide conquer 的思想...
動態規劃入門
大家可以看看這篇文章dp,哪個更容易理解就看哪個!一 動態規劃的定義 動態規劃程式設計是一種針對於解決最優化問題的一種途徑 一種方法,而不是一種特殊演算法,也就是說它沒有固定的模板。在動態規劃中,每走一步都要看看能不能最優,而且動態規劃最擅長的就是多階段問題!二 動態規劃的基本概和基本模型構成 1....
動態規劃入門
學動態規劃自然要從數字三角形開始起步,那麼我們就先從數字三角形開始。數字三角形題目 有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行之外的每個數的左下方和右下方各有乙個數,如下圖所示 3 24 10 1 4 3 2 20 從第一行的數開始,每次可以往下或往右下走一格,直到走到最下行,把沿途...