日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1771: 书架整理(dp)

發布時間:2024/9/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1771: 书架整理(dp) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1771: 書架整理
時間限制: 1 Sec 內存限制: 128 MB

題目描述
小明是計算機專業的學生,他想在本科畢業后繼續讀計算機研究生,于是他決定加入考研大軍。所以他準備了非常多的考研復習書,但這些書現在都無規則的排列在他的書架上。

他的書架有N層,每層放著M本書。現在他決定整理一下雜亂的考研書,每層按照書名的字典序排序。書名可以相同,且書名中只包含大小寫字母和空格。比較時,忽略書名中的空格,并且不區分字母大小寫。例如,要將“Operating System”轉換成“OperatingSystem”,再進行比較,并且“A”與“a”的字典序相同。
由于考研復習時間寶貴,小明想用最短的時間整理好這些順序雜亂的考研書。小明需要做的操作是每次從某一層書架里挑選出一本書,然后將其插入同一層的任意位置,這一操作會消耗小明一個單位的時間。現在小明想知道最短需要多長時間可以整理好整個書架上的書。

輸入
輸入包含多組測試數據。

每組第一行輸入兩個整數N和M(1<=N,M<=100),N表示書架共有N層,M表示每層有M本書。

接下來輸入N*M行,每行輸入一個書名,書名(包含空格)長度不超過50,第1行第M行表示第一層書架上的圖書序列,第M+1行第2M行表示第二層書架上的圖書序列,以此類推。

輸出
對于每組輸入,輸出整理好所有考研書所需要的最短時間,每組輸出占一行。

樣例輸入
2 3
Data Structures
Operating System
Computer Networks
Design and Analysis of Algorithms
Gao Shu
Gai Lv Lun
樣例輸出
2
提示
來源
ac_code:
//LIS~

#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; struct str {char s[105]; }data[150]; char tp[200]; int dp[200]; void solve(char *p,int pos) {int length = strlen(p),k = 0;memset(data[pos].s,'\0',sizeof(data[pos].s));for(int i = 0 ; i < length; i++){if(p[i] != ' ')data[pos].s[k++] = p[i];} } int main() {int n,m;while(~scanf("%d%d",&n,&m)){getchar();int ans = 0;while(n--){for(int i = 0; i < m; i++){dp[i] = 1;memset(tp,'\0',sizeof(tp));gets(tp);solve(tp,i);}int aim = 0;for(int i = 0; i < m; i++){for(int j = 0; j < i; j++){/*不分大小寫的比較函數,第一個參數為字符串1,第二個為字符串2,認真讀題,本題要考慮到==的情況*/if(strcasecmp(data[i].s,data[j].s)>=0)//最長不遞減子序列{dp[i] = max(dp[j]+1,dp[i]);}}aim = max(aim,dp[i]);}ans += m-aim; //需要移動的書的數量}printf("%d\n",ans);}return 0; } 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的1771: 书架整理(dp)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。