codevs 1040 統計單詞個數

2021-09-20 12:54:49 字數 1086 閱讀 8909

題目描述

給出乙個長度不超過200的由小寫英文本母組成的字母串(約定;該字串以每行20個字母的方式輸入,且保證每行一定為20個)。要求將此字母串分成k份(1輸入描述

第一行為乙個正整數(0輸出描述

每行乙個整數,分別對應每組測試資料的相應結果。

樣例輸入

11 3

thisisabookyouareaoh4is

aoksab樣例輸出7分析

這道題屬於劃分型的動態規劃,首先要獲得不同區間內單詞的數目,採用二維陣列a進行儲存,然後再進行劃分。

#include#includeusing namespace std;

#define n 200 + 10

int a[n][n],dp[n][n];

//a[i][j]表示i到j之間有多少個單詞

//dp[i][j]中i表示前i+1(i從0開始)個字元,j表示j次劃分

string w[100];

int main()

cin >> s;

for(int i = 0; i < s; i++)

cin >> w[i];

for(int i = 0; i < t.size(); i++)//從i的位置向前找

for(int j = i; j >= 0; j--)

if(n == w[k].size()) }}

}for(int i = 0; i < t.size(); i++)

dp[i][0] = a[0][i];//前i+1個字元分成乙份

for(int i = 0; i < t.size(); i++)

for(int j = 1; j < k; j++)//劃分的次數

for(int k = j - 1; k < i; k++)//至少為j份才可以進行j-1次劃分

dp[i][j] = max(dp[i][j],dp[k][j - 1] + a[k + 1][i]);

cout << dp[t.size() - 1][k - 1] << endl;//這裡k-1是因為劃了k-1次

} return 0;

}

1040 統計單詞個數

2001年noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解給出乙個長度不超過200的由小寫英文本母組成的字母串 約定 該字串以每行20個字母的方式輸入,且保證每行一定為20個 要求將此字母串分成k份 1輸入描述 input description 第一...

統計乙個文字的字元 單詞數

文字操作是最常見的,以例子的形式來驅動程式的編寫 encoding utf 8 import time keep defnormalize s 大寫轉換成小寫,並且剔除數字等開頭或不在列表中的字元,返回正常字串 result for c in s.lower if c in keep result ...

洛谷P1026 NOIP2001 統計單詞個數

剛看到這個題一直在糾結怎麼劃分成k份再轉移,事實證明我想多了 先預處理出陣列w i j 表示從i到j的單詞個數,如果有多個以i開頭的單詞,只統計一次即可 dp i j 表示從0到i劃分成j份,則 dp i j max dp k j 1 w k 1 j j 1 k 順便 一下用貪心a掉此題的zy大神 ...