程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> uva - 10602 - Editor Nottoobad(貪心)

uva - 10602 - Editor Nottoobad(貪心)

編輯:C++入門知識

題意:給你幾個單詞,第一個單詞必須手動打印,後邊的單詞可以通過“重復最後一個單詞”“刪除最後的字母”(當然也可以打印)轉換得到,求最小的操作次數。

方法:字典序排序+枚舉。輸出具有一定的迷惑性,千萬要注意它說的如果輸出有多種,任意輸出一種就行。

AC代碼:

#include     
#include     
#include     
#include     
#include     
#include     
#include     
#include     
#include     
#include 

using namespace std;  
const int maxn = 100+10;

void Solve(string *word, int N, int ans)
{
	int i = 0, j = 0;
	sort(word, word+N);
	ans = word[0].size();
	for (i = 1; i < N; i++)
	{
		if (word[i][0] != word[i-1][0])
			ans += word[i].size();
		else
		{
			for (j = 0; j < word[i].size() && j < word[i-1].size(); j++)
			{
				if (word[i][j] != word[i-1][j])
					break;
			}
			ans += word[i].size() - j;
		}
	}
	cout << ans << endl;
	for (i = 0; i < N; i++)
		cout << word[i] << endl;
}


int main()
{
#ifdef Local      
	freopen("a.in", "r", stdin);  
#endif
	int T = 0;
	cin >> T;
	while (T--)
	{
		int N = 0, i = 0, ans = 0;
		string word[maxn];
		cin >> N;
		for (i = 0; i < N; i++)
			cin >> word[i];
		Solve(word, N, ans);
	}
	return 0;
}


最近A的第一道uva啊希望能來點狀態,一天A1~2道。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved