East Central North America 2005-2006 —— ACM(ACronym Maker)

East Central North America 2005-2006 —— ACM(ACronym Maker)

题目来源:

  • POJ 2731
  • Codeforces Gym 100650A

题意:

多组数据,告知那些单词可以被忽略,问有多少种获得某缩写的方法

例如:

2
and
of
ACM academy of computer makers
RADAR radio detection and ranging
LAST CASE

ACM 有 从academy 得到 两种a 的方法。所以输出为

ACM can be formed in 2 ways

题解:

DP题一道,dp(当前处理单词)(对应缩写位)=方案数。

令当前处理单词为i(排除忽略单词),对应缩写位j,则dp(i)(j+1)=dp(i-1)(j)+dp(i)(j)

代码:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int maxn=200;
int dp[maxn],dp2[maxn],cnt,n;
string T,word[maxn];
set s;
char tstr[maxn];

//取单词
void pre(char *s)
{
    stringstream ss(s);
    ss >> T;
    while(ss >> word[cnt++]);
}

int main()
{
#ifndef ONLINE_JUDGE
    freopen("A.in","r",stdin);
    //freopen("A-o.out","w",stdout);
#endif
    string str;
    while(cin >> n && n)
    {
        cnt=1;
        s.clear();
        while(n--)
        {
            cin >>str;
            s.insert(str);
        }
        scanf("\n");
        //有多组数据
        while(gets(tstr) && strcmp(tstr,"LAST CASE")!=0)
        {
            memset(dp,0,sizeof(dp));
            cnt=1;
            pre(tstr);
            dp[0]=1;
            //大小写转换
            for(int i=0;i

转载于:https://www.cnblogs.com/Combustible-ice/p/5836229.html

你可能感兴趣的:(East Central North America 2005-2006 —— ACM(ACronym Maker))