#include <stdio.h> |
#include <stdlib.h> |
#define MAXNUM 200 |
int n; //地窖的个数 |
int w[MAXNUM]; //每个地窖中的地雷数 |
int Sum[MAXNUM]; //挖到的地雷总数 |
int G[MAXNUM][MAXNUM]; //形成的图 |
int next[MAXNUM]; //记录路径 |
int max; //最大值 |
int start; |
//void init(int G[MAXNUM][MAXNUM]); |
//void init2(int n[MAXNUM]); |
int main() |
{ |
int i,j,x,y; |
printf ( "输入地窖的个数n(1-200):\n" ); |
scanf ( "%d" ,&n); |
printf ( "输入各个地窖中的地雷数:\n" ); |
for (i=1;i<=n;i++) |
{ |
scanf ( "%d" ,&w[i]); |
} |
//init(G);//初始化有向图 |
printf ( "输入各个地窖之间的链接(x,y):\n" ); |
scanf ( "%d,%d" ,&x,&y); |
while (x!=0&&y!=0) |
{ |
G[x][y]=1; |
scanf ( "%d,%d" ,&x,&y); |
} |
//init2(Sum); |
Sum[n]=w[n]; |
for (i=n-1;i>=1;i--) |
{ |
for (j=i+1;j<=n;j++) |
{ |
if (G[i][j]&&Sum[j]>Sum[i]) |
{ |
Sum[i]=Sum[j]; |
next[i]=j; |
} |
} |
Sum[i] += w[i]; |
} |
max = 0; |
for (i=1;i<=n;i++) |
{ |
if (Sum[i]>max) |
{ |
max=Sum[i]; |
start = i; |
} |
} |
printf ( "最大路径:" ); |
printf ( "%d-" ,start); |
while (next[start]!=0) |
{ |
printf ( "%d-" ,next[start]); |
start = next[start]; |
} |
printf ( "最大挖雷数:%d\n" ,max); |
return 0; |
} |
初级程序员
by: 云代码会员 发表于:2015-06-19 15:23:37 顶(1) | 踩(0) 回复
不错
回复评论