Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这题的测试数据……………… 首先第一个数字前应该有空格 其次SPECIAL JUDGE是必须的 可惜现在还没有//附上程序 简单的迭代实现 不过试了很多参数才AC #include<stdio.h> #include<string.h> #define MaxN 21 #define Profit 1.01 int n; double map[MaxN][MaxN]; double arb[MaxN][MaxN]; int way[MaxN][MaxN][MaxN]; int from,to,len; int init() { int i,j; if (scanf("%d",&n)==EOF) return 0; for (i=0; i<n; i++) for (j=0; j<n; j++) {if (i==j) map[i][j]=1; else scanf("%lf",&map[i][j]); arb[i][j]=map[i][j]; way[i][j][0]=j; } return 1; } void search() { int i,j,k,h; double tmp[MaxN][MaxN]; int tmpw[MaxN][MaxN][MaxN]; from=-1; to=-1; len=-1; for (j=0; j<n; j++) for (k=0; k<n; k++) if (arb[j][k]*map[k][j]>Profit) {from=j; to=k; len=0; return;} for (i=1; i<=n-2; i++) {memcpy(tmp,arb,sizeof(arb)); memcpy(tmpw,way,sizeof(way)); for (j=0; j<n; j++) for (k=0; k<n; k++) arb[j][k]=-1; for (j=0; j<n; j++) for (h=0; h<n; h++) for (k=0; k<n; k++) if (tmp[j][k]*map[k][h]>arb[j][h]) {arb[j][h]=tmp[j][k]*map[k][h]; memcpy(way[j][h],tmpw[j][k],sizeof(tmpw[j][k])); way[j][h][i]=h; } for (j=0; j<n; j++) for (k=0; k<n; k++) if (arb[j][k]*map[k][j]>Profit) {from=j; to=k; len=i; return;} } } void show() { int k; if (len==-1) printf("no arbitrage sequence exists\n"); else {printf(" %d",from+1); for (k=0; k<=len; k++) printf(" %d",way[from][to][k]+1); printf(" %d\n",from+1); } } int main() {while(init()) {search(); show(); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator