題目描述:
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
輸入:
輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 s,t;起點s,終點t。n和m為0時輸入結束。(1
輸出:
輸出 一行有兩個數, 最短距離及其花費。
樣例輸入:
3 21 2 5 6
2 3 4 5
1 30 0
樣例輸出:
9 11
注意:1.
有時候輸入資料中兩個點之間會有多條邊,由於我們只能選擇一條邊進行處理,所以輸入的時候進行一下去除重邊的操作: 如果有重邊並且兩個邊的距離不一樣就取小的,如果兩個邊的距離一樣,就選擇花費小的。
2、採用dijkstra演算法
#include#includeusing namespace std;
int cost[1005][1005],map[1005][1005];
const int inf=99999999;
int n,m;
void dijkstra(int start,int end)
visit[start]=1;//從起點開始表示起點已經被選中到集合s中 ,當所有的點都被選中到s中就算結束了
//開始依次尋找距離start起點最近的點v加入s集合中並進行中轉
for(int i=1;i<=n;i++)
else if(visit[j]!=1&&map[v][j]!=inf&&dis[j]==dis[v]+map[v][j])//如果j沒有加入s並且中轉後的距離一樣,那麼花費更新} }
cout<>n>>m&& (n||m))
} /*有時候輸入資料中兩個點之間會有多條邊,由於我們只能選擇一條邊進行處理,所以輸入的時候進行一下去除重邊的操作:
如果有重邊並且兩個邊的距離不一樣就取小的,如果兩個邊的距離一樣,就選擇花費小的。
*/ while(m--)
else if(map[a][b]==d)
}//輸入結束
cin>>begin>>end;
dijkstra(begin,end);
} return 0;
}
題目描述:
判斷兩序列是否為同一二叉搜尋樹序列
輸入:
開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。
接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。
接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。
輸出:
如果序列相同則輸出yes,否則輸出no
樣例輸入:
2567432
543267
576342
0
樣例輸出:
yesno
//解題思路:將每個序列構造成乙個二叉搜尋樹,然後給出前序遍歷(或者後序或者中序)的結果,如果結果一樣就是一顆二叉樹,否則不是一棵。
#include #include using namespace std;
struct node
};//插入有序樹
void insertsorttree(node * root, char data)
else if(p->dataright = q ;
return;}}
}//銷毀有序樹
void destroysorttree(node * root)
//建立有序樹
node * createsorttree(char * datas , int n)
return root ;
}//用到的變數
char x1[11];int ct1 = 0;
char x2[11];int ct2 = 0;
//前根序遍歷
void pre_lst(node * root,char* x,int &index)
//比較前根序列
bool cmp(int n)
return true ;
}int main()
{ int t ;
int n;
node * root1 = null;
node * root2 = null;
int index1 ,index2 ;
while(1){
cin>>t ;if(t==0)break;
cin>>x1 ;
ct1 = strlen(x1);
root1 = createsorttree(x1,ct1);
index1 = 0 ;
pre_lst(root1,x1,index1) ;
for(int i = 0 ; i < t ; i++ ){
cin>>x2 ;
ct2 = strlen(x2);
root2 = createsorttree(x2,ct2);
index2 = 0 ;
pre_lst(root2,x2,index2) ;
if(cmp(ct1)){
cout<<"yes"<
2023年浙江大學計算機及軟體工程研究生機試真題
題目描述 excel可以對一組紀錄按任意指定列排序。現請你編寫程式實現類似功能。對每個測試用例,首先輸出1行 case i 其中 i 是測試用例的編號 從1開始 隨後在 n 行中輸出按要求排序後的結果,即 當 c 1 時,按學號遞增排序 當 c 2時,按姓名的非遞減字典序排序 當 c 3 時,按成績...
2023年浙江大學計算機及軟體工程研究生機試真題
最大報銷額 將題目中數字都擴大100倍變成整數,就可看作經典的01揹包問題 設報銷額度為揹包上限,可報銷支票金額為 可報銷支票金額為重量 a存的既是 又是重量 include includeusing namespace std int a 32 存的既是 又是重量 const int max 30...
PAT 浙江大學計算機程式設計能力考試簡介
日期 2012 02 27 摘要 pat 浙江大學計算機程式設計能力考試簡介 宗 旨 浙江大學計算機程式設計能力考試 programming ability test,簡稱pat 是由浙江大學電腦科學與技術學院組織的統一考試,旨在培養和展現學生分析問題 解決問題和計算機程式設計的能力,科學評價計算機...