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 |
为什么是WA呢#include<stdio.h> #include<string.h> #define MAN 101 char son_n[MAN][20],dady_n[MAN][20]; int son_age[MAN],sonb[MAN]; int n,m; int cal_age(char dady[]) { int i,j; int father_age,father_num; if(!strcmp(dady,"Ted")) return 100; else { for(i=1;i<=m;i++) { if(!strcmp(dady,son_n[i])) { father_age=son_age[i]; father_num=i; } } if(father_age>0) { return father_age; } else { father_age=cal_age(dady_n[father_num])-sonb[father_num]; return father_age; } } } void sort() { int i,j; char temp_n[20]; int temp; for(i=1;i<m;i++) { for(j=i+1;j<=m;j++) { if((son_age[i]<son_age[j])||(son_age[i]==son_age[j]&&strcmp(son_n[i],son_n[j])>1)) { strcpy(temp_n,son_n[i]); strcpy(son_n[i],son_n[j]); strcpy(son_n[j],temp_n); temp=son_age[i]; son_age[i]=son_age[j]; son_age[j]=temp; } } } } int main() { int i,j; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&m); for(j=1;j<=m;j++) { scanf("%s %s %d",dady_n[j],son_n[j],&sonb[j]); } for(j=1;j<=m;j++) { son_age[j]=cal_age(dady_n[j])-sonb[j]; } sort(son_n,son_age); printf("DATASET %d\n",i); for(j=1;j<=m;j++) { printf("%s %d\n",son_n[j],son_age[j]); } } return 0; } 我用的是递归调用,每次求出父亲的年龄后再求出儿子的。还有什么好的方法吗? Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator