有個坑點是第三條件是個遞迴式,比如說apata(假設我們叫這個字串為a)是正確的,那麼apaataa(b)也是正確的。既然b是正確的,那麼由b得:apaaataaa(c)也是正確的,以此類推。現在我們要做的就是把c逐步還原到a,判定a是否滿足第二條件。
還有第一,二條件裡其實隱含了p,t只能出現一次,而且必然要出現,而a可以出現好多次。其他應該沒什麼要注意的。
附上本人優雅的**~
#include #include using namespace std;
bool sec_con(string str)
return true;
}bool trd_con(string str)
if (it - ip == 1) return false;
if (it - ip == 2 && sec_con(str))
return true;
string a;
for (int i = 0; i < ip; i++)
a += str[i];
string c;
for (int i = it + 1; i < length - a.length(); i++)
c += str[i];
string b;
for (int i = ip + 1; i < it - 1; i++)
b += str[i];
string sum = a + 'p' + b + 't' + c;
return trd_con(sum);
}int main()
if (str[i] == 't')
} if (indexoft - indexofp < 0 || p >1 || indexofp ==-1 || t > 1 || indexoft == -1 || a == false)
if (sec_con(str))
cout << "yes" << endl;
else if (trd_con(str))
cout << "yes" << endl;
else cout << "no" << endl;
} return 0;
}
1003 我要通過
一直都搞錯了題目的意思,後來看了網上的解析,才知道原來題目是要apbtc滿足len a len b len c int main size t t s.find first not of a p 1 if t string npos t p 1 s t t 找出p後下乙個不是a的位置,如果不是t或者...
1003 我要通過
解題思路 剛開始讀題的時候有幾個地方沒有注意,首先xpatx其中pat兩側的應該是一樣的串,其次如果apatc正確,那麼apaatca也是正確的,以此類推apaaatcaa,apaaaatcaaa 都是正確的 include include include using namespace std i...
1003 我要通過!
只看 直接拖到最下面 其實剛一看這個題沒看懂,很輕易就能得出的結論是 必須要有pat三個字元,p,t有且只有乙個,p在t前面。第2,3點就不知道具體想表達啥了,反正我是沒看出來。看了一下網上的部落格,大家普遍認同的一種結論是 以p和t為邊界可以分為三部分 p t 也就是畫星號的三部分。我們先不管空字...