UPC Fstring字串 基本狀態轉移)

2021-09-25 18:26:35 字數 1243 閱讀 8475

既然不能存在abc三個字母連續出現的情況,那麼假定每乙個字母都需要由在他之前的兩個字母決定,那麼就會有兩種情況:前兩個字母相等和前兩個字母不等。

如果前兩個字母相等,那麼那兩個字母之前的組合可能性都是一樣的,後乙個字母的狀態只相當於複製了前乙個狀態,比如a到aa,b到bb,c到cc,都是三種情況,那麼第三個字母是任意情況。

如果前兩個字母不等,那麼就需要後乙個字母的狀態減去前乙個字母的狀態(減去相等情況),第三個字母只能是前兩個字母裡選乙個,是兩種情況。

所以每乙個狀態都由兩個部分組成,因此存在遞推式dp[i]=2*(dp[i-1]-dp[i-2])+3*dp[i-2]

//#include#include #include #include #include #include #include #include #include #include #define determination main

#define lldin(a) scanf_s("%lld", &a)

#define println(a) printf("%lld\n", a)

#define reset(a, b) memset(a, b, sizeof(a))

const int inf = 0x3f3f3f3f;

using namespace std;

const double pi = acos(-1);

typedef long long ll;

typedef unsigned long long ull;

typedef long double ld;

const int mod = 1000000007;

const int tool_const = 19991126;

const int tool_const2 = 2000;

inline ll lldcin()

while (c >= '0' && c <= '9')

return si * tmp;

}///untersee boot ixd2(1942)

/**although there will be many obstructs ahead,

the desire for victory still fills you with determination..**/

/**last remote**/

ll dp[50000];

int determination()

字串基本操作

include unsigned int strlenth char s 獲取字串長度 return lenth void strcopy char target,char source 字串拷貝 int strcompare char s,char t 字串比較,s t,則返回1 s t,則返回0...

字串基本操作

遞迴求字串長度 int recurlength char str 字串中最後乙個引數的長度 int lastwordlen char str,int len int lastwordlen char str return lastlen 字串記憶體的拷貝 實現memmove函式 char my me...

字串基本操作

判斷字串開頭結尾字元 string.startswith l 判斷字串是否以l開頭 string.endswith n 判斷字串是否以n結尾 返回字串中字元的位置 string.find x 找到這個字元返回下標,多個時返回第乙個 不存在的字元返回 1 string.index x 找到這個字元返回...