連線:
時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:5
描述
給你一些單詞,請你判斷能否把它們首尾串起來串成一串。
前乙個單詞的結尾應該與下乙個單詞的道字母相同。
如aloha
dogarachnid
gopher
tiger
rat
輸入
第一行是乙個整數n(0輸出
如果存在拼接方案,請輸出所有拼接方案中字典序最小的方案。(兩個單詞之間輸出乙個英文句號".")
如果不存在拼接方案,則輸出
***樣例輸入
26aloha
arachnid
doggopher
rattiger
3oak
maple
elm
樣例輸出
aloha.arachnid.dog.gopher.rat.tiger***
剛學了尤拉通路準備找題練手,就悲劇的找到了這個。雖然用思想挺簡單,但是題目要求要按字典序排列,讓我除錯的好辛苦啊!最後沒有辦法還是找了位大牛(piaoyi)幫忙。
貼下又爛又長的**:
#include#include#include#include#include#includeusing namespace std;
const int maxcolor=26;
int g[maxcolor+1][maxcolor+1];
vectorans;//存放結果陣列
priority_queue, greater>mm[maxcolor+1][maxcolor+1];//按字典序排
int abs(int x)
void euler(int u)}}
if(flag)//繼續深搜字典序最小的
}}int f()//找起點函式
res+=abs(chu-ru);
if(chu>ru)start=i;//如果是半尤拉圖,起點就是出度大一點的那個單詞
}if(res>2)return -1;//如果不構成尤拉路,就跳出
return start;
}int main()
start=f();
if(start==-1)
ans.clear();
euler(start);
if((int)ans.size()!=n)//如果單詞沒有找完,說明不連通,就輸出***
for(int i=ans.size()-1;i>=0;i--)//輸出結果
cout<}
return 0;
}
南陽理工oj6題
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0 輸入 第一行m表示有m組測試資料 每一組測試資料的第一行有乙個整數數n,n表示共有n個噴水裝...
南陽理工oj 整數劃分(DP)
問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積輸入 第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0 m n的位數 輸出 輸出每組測試樣例結果為乙個整數佔一行 樣例輸入 2 ...
南陽理工OJ91 階乘之和
include int helper 100 void getmultiply 根據備忘錄求解遞迴表 int getresult int n 獲取結果 int getindex int n 取得離輸入的值最近的且小於的數的位置 int main else return 0 void getmulti...