思路:已有牌的分数固定求和。新增 mmm 张牌,每种无限,显然每张都选分数最大的那种点数。所以答案 = 已有牌分数和 +m∗max+ m * max+m∗max (13个分数)。
注意:字符串中"10"占两个字符。解析方法:遍历字符串,如果 s[i]==′1′s[i]=='1's[i]==′1′ 且 i+1<ni+1<ni+1<n 且 s[i+1]==′0′s[i+1]=='0's[i+1]==′0′,则是"10"(对应索引9),i+=2i+=2i+=2;否则映射单字符。
映射: ′A′−>0,′2′−>1,...,′9′−>8,"10"−>9,′J′−>10,′Q′−>11,′K′−>12'A'->0, '2'->1,...,'9'->8, "10"->9, 'J'->10,'Q'->11,'K'->12′A′−>0,′2′−>1,...,′9′−>8,"10"−>9,′J′−>10,′Q′−>11,′K′−>12 。
单字符映射可以用:如果是 ′A′'A'′A′ 索引0;'2'..'9' 索引 =c−′1′= c-'1'=c−′1′ (因为 ′2′−>1'2'->1′2′−>1 , ′9′−>8'9'->8′9′−>8 ); ′J′−>10,′Q′−>11,′K′−>12'J'->10,'Q'->11,'K'->12′J′−>10,′Q′−>11,′K′−>12 。
给出C++代码:
数据范围:分数 ≤1000≤1000≤1000 ,m≤100,n≤100m≤100,n≤100m≤100,n≤100 ,最大和约 1001000+1001000=2000001001000 + 100 1000 = 2000001001000+1001000=200000, intintint 足够,但用 longlonglong longlonglong 保险。