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 |
为什么这道题用流和string就ce用char就过了……#include<cstdio> #include<cstring> int tel[10]; struct Astr { int flag,num; Astr *next[10]; }map,*now,*p; int N; int pflag=0; char s[50]; char c; int change(char a) { if('0'<=a&&a<='9') return a-'0'; if('A'<=a&&a<='P') return (a-'A')/3+2; if('R'<=a&&a<='Y') return (a-'A'-1)/3+2; return -1; } void getin(char s[]) {char c; int l=strlen(s),num=0; for(int i=0;i<l;i++) { c=s[i]; num=change(c); if(num!=-1) { if(now->next[num]==NULL) { p=new(Astr); p->flag=1;p->num=0; for(int i=0;i<=9;i++)p->next[i]=NULL; now->next[num]=p; } now=now->next[num]; } } now->num++; } void dfs(Astr *now,int number) { if(number==7&&now->num>1) { for(int i=1;i<=3;i++)printf("%d",tel[i]); printf("-"); for(int i=4;i<=7;i++)printf("%d",tel[i]); printf(" "); printf("%d\n",now->num); pflag=1; return; }//print for(int i=0;i<=9;i++) if(now->next[i]!=NULL) {tel[++tel[0]]=i; dfs(now->next[i],number+1); tel[0]--;} } int main() { scanf("%d",&N); map.flag=1;map.num=0;for(int i=0;i<=9;i++)map.next[i]=NULL; memset(tel,0,sizeof(tel)); while(N--) { scanf("%s",s); now=↦ getin(s); } now=↦ tel[0]=0; pflag=0; dfs(now,0); if(!pflag) printf("No duplicates.\n"); return 1; } 之前用的string就错了 char[]就过了 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator