白书一: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=64609#overview
注意UVA没有PE之类的,如果PE了显示WA。
UVA401:Palindromes
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
char a[130];
int l,flag,flag2,f3;
void init()
{
flag=0;
flag2=0;
f3=0;
}
void judge();
int main()
{
while(scanf("%s",a)!=EOF)
{
l=strlen(a);
init();
for(int i=0; i<l/2; i++)
{
if(a[i]!=a[l-1-i])
{
flag=1;
break;
}
}
judge();
if(flag==1&&flag2==1)
{
printf("%s -- is not a palindrome.\n",a);
cout<<endl;
continue;
}
if(flag==0&&flag2==1)
{
printf("%s -- is a regular palindrome.\n",a);
cout<<endl;
continue;
}
for(int i=0; i<l/2; i++)
{
if(a[i]=='A'&&a[l-i-1]=='A') ;
else if(a[i]=='M'&&a[l-i-1]=='M') ;
else if(a[i]=='H'&&a[l-i-1]=='H') ;
else if(a[i]=='I'&&a[l-i-1]=='I') ;
else if(a[i]=='Y'&&a[l-i-1]=='Y') ;
else if(a[i]=='O'&&a[l-i-1]=='O') ;
else if(a[i]=='T'&&a[l-i-1]=='T') ;
else if(a[i]=='U'&&a[l-i-1]=='U') ;
else if(a[i]=='V'&&a[l-i-1]=='V') ;
else if(a[i]=='W'&&a[l-i-1]=='W') ;
else if(a[i]=='X'&&a[l-i-1]=='X') ;
else if(a[i]=='1'&&a[l-i-1]=='1') ;
else if(a[i]=='8'&&a[l-i-1]=='8') ;
else if((a[i]=='E'&&a[l-i-1]=='3')||(a[i]=='3'&&a[l-i-1]=='E')) ;
else if((a[i]=='J'&&a[l-i-1]=='L')||(a[i]=='L'&&a[l-i-1]=='J')) ;
else if((a[i]=='S'&&a[l-i-1]=='2')||(a[i]=='2'&&a[l-i-1]=='S')) ;
else if((a[i]=='Z'&&a[l-i-1]=='5')||(a[i]=='5'&&a[l-i-1]=='Z')) ;
else
{
f3=1;
break;
}
}
if(l%2==1)
{
if(a[l/2]=='E'||a[l/2]=='J'||a[l/2]=='L'||a[l/2]=='Z'||a[l/2]=='2'||a[l/2]=='S'||a[l/2]=='3'||a[l/2]=='5')
{
f3=1;
}
}
if(flag==1&&f3==1)
{
printf("%s -- is not a palindrome.\n",a);
cout<<endl;
continue;
}
if(flag==0&&f3==1)
{
printf("%s -- is a regular palindrome.\n",a);
cout<<endl;
continue;
}
if(flag==1&&f3==0)
{
printf("%s -- is a mirrored string.\n",a);
cout<<endl;
continue;
}
else
{
printf("%s -- is a mirrored palindrome.\n",a);
cout<<endl;
}
}
return 0;
}
void judge()
{
for(int i=0; i<l; i++)
{
switch(a[i])
{
case 'A':
break;
case 'E':
break;
case 'H':
break;
case 'I':
break;
case 'L':
break;
case 'J':
break;
case 'M':
break;
case 'O':
break;
case 'S':
break;
case 'T':
break;
case 'U':
break;
case 'V':
break;
case 'W':
break;
case 'X':
break;
case 'Y':
break;
case 'Z':
break;
case '1':
break;
case '2':
break;
case '3':
break;
case '5':
break;
case '8':
break;
default :
flag2=1;
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
View Code
UVA10010:Where's Waldorf?
#include <iostream>
#include <cstdio>
#include <string.h>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct node
{
int x,y;
};
int n,m,k,l,flag,txx,tyy;
char map[60][60],ch[60];
void init()
{
flag=0;
txx=0;
tyy=0;
}
void dfs1(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x;
t.y=y-1;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs1(t.x,t.y,le+1);
}
return ;
}
void dfs2(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x-1;
t.y=y-1;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs2(t.x,t.y,le+1);
}
return ;
}
void dfs3(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x-1;
t.y=y;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs3(t.x,t.y,le+1);
}
return ;
}
void dfs4(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x-1;
t.y=y+1;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs4(t.x,t.y,le+1);
}
return ;
}
void dfs5(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x;
t.y=y+1;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs5(t.x,t.y,le+1);
}
return ;
}
void dfs6(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x+1;
t.y=y-1;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs6(t.x,t.y,le+1);
}
return ;
}
void dfs7(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x+1;
t.y=y;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs7(t.x,t.y,le+1);
}
return ;
}
void dfs8(int x,int y,int le)
{
if(le==l)
{
flag=1;
return ;
}
struct node t;
t.x=x+1;
t.y=y+1;
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&map[t.x][t.y]==ch[le])
{
dfs8(t.x,t.y,le+1);
}
return ;
}
int main()
{
int T,ll;
scanf("%d",&T);
getchar();
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++)
{
scanf("%*c%s",map[i]);
ll=strlen(map[i]);
for(int j=0;j<ll;j++)
{
if(map[i][j]>='A'&&map[i][j]<='Z')
map[i][j]+=32;
}
}
scanf("%d",&k);
while(k--)
{
init();
scanf("%s",ch);
l=strlen(ch);
for(int i=0;i<l;i++)
{
if(ch[i]>='A'&&ch[i]<='Z')
ch[i]+=32;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
if(map[i][j]==ch[0])
{
txx=i+1;
tyy=j+1;
dfs1(i,j,1);
if(flag)
break;
dfs2(i,j,1);
if(flag)
break;
dfs3(i,j,1);
if(flag)
break;
dfs4(i,j,1);
if(flag)
break;
dfs5(i,j,1);
if(flag)
break;
dfs6(i,j,1);
if(flag)
break;
dfs7(i,j,1);
if(flag)
break;
dfs8(i,j,1);
if(flag)
break;
}
}
if(flag) break;
}
printf("%d %d\n",txx,tyy);
}
if(T) printf("\n");
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
- 174.
- 175.
- 176.
- 177.
- 178.
- 179.
- 180.
- 181.
- 182.
- 183.
- 184.
- 185.
- 186.
- 187.
- 188.
- 189.
- 190.
- 191.
- 192.
- 193.
- 194.
- 195.
- 196.
- 197.
- 198.
- 199.
- 200.
- 201.
- 202.
- 203.
- 204.
- 205.
- 206.
- 207.
- 208.
- 209.
- 210.
- 211.
- 212.
- 213.
- 214.
- 215.
- 216.
- 217.
View Code
UVA10361:Automatic Poetry
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,l1,l2,l3,l4,l5,l6;
char a[110],b[110];
void init()
{
l3=-1;
l4=-1;
l5=-1;
l6=-1;
}
int main()
{
scanf("%d",&n);
getchar();
while(n--)
{
gets(a);
gets(b);
l1=strlen(a);
l2=strlen(b);
init();
for(int i=0;i<l1;i++)
{
if(a[i]!='<'&&a[i]!='>')
{
printf("%c",a[i]);
}
else if(a[i]=='<'&&l3==-1)
{
l3=i;
}
else if(a[i]=='>'&&l4==-1)
{
l4=i;
}
else if(a[i]=='<'&&l5==-1)
{
l5=i;
}
else if(a[i]=='>'&&l6==-1)
{
l6=i;
}
}
printf("\n");
for(int i=0;i<l2;i++)
{
if(b[i]=='.')
break;
printf("%c",b[i]);
}
for(int i=l5+1;i<l6;i++)
{
printf("%c",a[i]);
}
for(int i=l4+1;i<l5;i++)
{
printf("%c",a[i]);
}
for(int i=l3+1;i<l4;i++)
{
printf("%c",a[i]);
}
for(int i=l6+1;i<l1;i++)
{
printf("%c",a[i]);
}
printf("\n");
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
View Code
UVA537:Artificial Intelligence?
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
#define inf 0x3f3f3f3f
using namespace std;
char a[1001],b[1001],c[1001],d[1001];
int l,U,I,P,t1,t2,t3;
double v1,i1,w1;
void init()
{
U=inf;
I=inf;
P=inf;
v1=1;
i1=1;
w1=1;
t1=t2=t3=0;
}
int main()
{
int T;
scanf("%d",&T);
getchar();
for(int z=1; z<=T; z++)
{
init();
gets(a);
l=strlen(a);
for(int i=0; i<l; i++)
{
if(a[i]=='U'&&a[i+1]=='=')
{
for(int j=i+2; j<l; j++)
{
if((a[j]>='0'&&a[j]<='9')||a[j]=='.')
{
b[t1++]=a[j];
}
else
{
b[t1]='\0';
if(a[j]=='k')
v1=1000;
else if(a[j]=='V')
v1=1;
else if(a[j]=='m')
v1=0.001;
else if(a[j]=='M')
v1=1000000;
break;
}
}
U=0;
}
else if(a[i]=='I'&&a[i+1]=='=')
{
for(int j=i+2; j<l; j++)
{
if((a[j]>='0'&&a[j]<='9')||a[j]=='.')
{
c[t2++]=a[j];
}
else
{
c[t2]='\0';
if(a[j]=='m')
i1=0.001;
else if(a[j]=='M')
i1=1000000;
else if(a[j]=='k')
i1=1000;
else if(a[j]=='A')
i1=1;
break;
}
}
I=0;
}
else if(a[i]=='P'&&a[i+1]=='=')
{
for(int j=i+2; j<l; j++)
{
if((a[j]>='0'&&a[j]<='9')||a[j]=='.')
{
d[t3++]=a[j];
}
else
{
d[t3]='\0';
if(a[j]=='M')
w1=1000000;
else if(a[j]=='m')
w1=0.001;
else if(a[j]=='k')
w1=1000;
else if(a[j]=='W')
w1=1;
break;
}
}
P=0;
}
}
printf("Problem #%d\n",z);
double sum;
if(U==0&&I==0)
{
sum=atof(b)*atof(c)*v1*i1;
printf("P=%.2lfW\n",sum);
}
else if(U==0&&P==0)
{
sum=(atof(d)*w1)/(atof(b)*v1);
printf("I=%.2lfA\n",sum);
}
else if(I==0&&P==0)
{
sum=(atof(d)*w1)/(atof(c)*i1);
printf("U=%.2lfV\n",sum);
}
cout<<endl;
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
View Code
UVA409:Excuses, Excuses!
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef struct Node
{
struct Node *next[26];
int flag;
} Node,*Tree;
int n,m,K,ll,M;
void Creat(Tree &T)
{
T=(Node *)malloc(sizeof(Node));
T->flag=0;
for(int i=0; i<26; i++)
T->next[i]=NULL;
}
void insert(Tree &T,char *s)
{
Tree p=T;
int t;
int l=strlen(s);
for(int i=0; i<l; i++)
{
if(s[i]>='a'&&s[i]<='z')
t=s[i]-'a';
else t=s[i]-'A';
if(p->next[t]==NULL)
Creat(p->next[t]);
p=p->next[t];
}
p->flag=1;
}
void search(Tree &T,char *s)
{
Tree p=T;
int t;
int l=strlen(s);
for(int i=0; i<l; i++)
{
if(s[i]>='a'&&s[i]<='z')
t=s[i]-'a';
else t=s[i]-'A';
if(p->next[t]==NULL)
return ;
p=p->next[t];
}
if(p->flag==1)
M++;
return ;
}
void D(Tree p)
{
for(int i=0; i<26; i++)
{
if(p->next[i]!=NULL)
D(p->next[i]);
}
free(p);
}
int main()
{
K=0;
char ch[210],q[210],aa[210][210];
int f1,p[210],maxx;
while(scanf("%d%d",&n,&m)!=EOF)
{
Tree T;
maxx=-1;
memset(p,0,sizeof(p));
Creat(T);
for(int i=0; i<n; i++)
{
scanf("%s",ch);
insert(T,ch);
}
getchar();
for(int i=0; i<m; i++)
{
gets(ch);
strcpy(aa[i],ch);
ll=strlen(ch);
f1=0;
M=0;
for(int j=0; j<ll; j++)
{
if((ch[j]>='a'&&ch[j]<='z')||(ch[j]>='A'&&ch[j]<='Z'))
{
q[f1++]=ch[j];
}
else
{
q[f1]='\0';
if(f1!=0)
search(T,q);
f1=0;
}
}
if(f1!=0)
{
q[f1]='\0';
search(T,q);
}
//cout<<"M=="<<M<<endl;
maxx=max(maxx,M);
p[i]=M;
}
printf("Excuse Set #%d\n",++K);
for(int i=0; i<m; i++)
{
if(p[i]==maxx)
printf("%s\n",aa[i]);
}
D(T);
printf("\n");
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
View Code
UVA10878: Decode the tape
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int t,l,ll,tt;
char a[1100];
int main()
{
tt=0;
while(gets(a)!=NULL)
{
if(strcmp(a,"___________")==0)
{
continue;
}
l=strlen(a);
t=0;
ll=0;
for(int i=l-1;i>=0;i--)
{
if(a[i]==' ')
{
ll++;
}
else if(a[i]=='o')
{
t+=pow(2,ll);
ll++;
}
}
printf("%c",t);
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
View Code
UVA10815:Andy's First Dictionary
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef struct Node
{
struct Node *next[26];
int flag;
} Node,*Tree;
int f1,l,tt;
char a[5002][210],CH[210];
void Creat(Tree &T)
{
T=(Node *)malloc(sizeof(Node));
T->flag=0;
for(int i=0; i<26; i++)
T->next[i]=NULL;
}
void insert(Tree &T,char *s)
{
Tree p=T;
int t;
int l=strlen(s);
for(int i=0; i<l; i++)
{
if(s[i]>='a'&&s[i]<='z')
t=s[i]-'a';
else t=s[i]-'A';
if(p->next[t]==NULL)
Creat(p->next[t]);
p=p->next[t];
}
p->flag=1;
}
void D(Tree p)
{
for(int i=0; i<26; i++)
{
if(p->next[i]!=NULL)
D(p->next[i]);
}
free(p);
}
void dfs(Tree &P,int r,int l)
{
if(P->flag>0)
{
CH[l]='a'+r;
CH[l+1]='\0';
printf("%s\n",CH);
}
else CH[l]=CH[l]='a'+r;
for(int i=0; i<26; i++)
{
if(P->next[i]!=NULL)
dfs(P->next[i],i,l+1);
}
}
int main()
{
Tree T;
tt=0;
while(gets(a[tt])!=NULL)
{
tt++;
}
Creat(T);
char ch[210];
for(int i=0; i<tt; i++)
{
l=strlen(a[i]);
f1=0;
for(int j=0; j<l; j++)
{
if((a[i][j]>='a'&&a[i][j]<='z')||(a[i][j]>='A'&&a[i][j]<='Z'))
{
ch[f1++]=a[i][j];
}
else
{
ch[f1]='\0';
// printf("%s\n",ch);
if(f1!=0)
insert(T,ch);
f1=0;
}
}
if(f1!=0)
{
ch[f1]='\0';
insert(T,ch);
//printf("%s\n",ch);
}
}
for(int i=0; i<26; i++)
{
if(T->next[i]!=NULL)
dfs(T->next[i],i,0);
}
D(T);
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
View Code
UVA644: Immediate Decodability
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef struct Node
{
struct Node *next[2];
int flag;
} Node,*Tree;
int f1;
int cmp(const void *aa,const void *bb)
{
return strcmp((char *)bb,(char *)aa);
}
void Creat(Tree &T)
{
T=(Node *)malloc(sizeof(Node));
T->flag=0;
for(int i=0; i<2; i++)
T->next[i]=NULL;
}
void insert(Tree &T,char *s)
{
Tree p=T;
int t;
int l=strlen(s);
for(int i=0; i<l; i++)
{
t=s[i]-'0';
if(p->next[t]==NULL)
Creat(p->next[t]);
p=p->next[t];
p->flag++;
}
if(p->flag>1)
{
f1=0;
}
}
void D(Tree p)
{
for(int i=0; i<2; i++)
{
if(p->next[i]!=NULL)
D(p->next[i]);
}
free(p);
}
char a[10000001][100];
int main()
{
Tree T;
int K=0,tt=0;
while(scanf("%s",a[0])!=EOF)
{
if(strcmp(a[0],"9")==0) break;
tt=1;
while(scanf("%s",a[tt])!=EOF)
{
if(strcmp(a[tt],"9")==0)
break;
tt++;
}
Creat(T);
f1=1;
qsort(a,tt,sizeof(a[0]),cmp);
for(int i=0; i<tt; i++)
{
insert(T,a[i]);
if(f1==0) break;
}
if(f1)
printf("Set %d is immediately decodable\n",++K);
else printf("Set %d is not immediately decodable\n",++K);
D(T);
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
View Code
UVA10115:Automatic Editing
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int n;
char a[20][100],b[20][100],ch[10001],t[10001];
int main()
{
while(scanf("%d",&n)!=EOF&&n!=0)
{
getchar();
for(int i=0;i<n;i++)
{
gets(a[i]);
gets(b[i]);
}
gets(ch);
for(int i=0;i<n;++i)
{
if(strstr(ch,a[i])!=NULL)//如果没有返回空
{
char *p=strstr(ch,a[i]);
int l=strlen(a[i]);
strcpy(t,p+l);
*p='\0';
strcat(ch,b[i]);
strcat(ch,t);
i--;
}
}
printf("%s\n",ch);
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
View Code
UVA424:Integer Inquiry
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int l1;
char a[1001];
int b[1001];
memset(b,0,sizeof(b));
while(scanf("%s",a)!=EOF)
{
if(a[0]=='0') break;
l1=strlen(a);
int j=0;
for(int i=l1-1; i>=0; i--)
{
b[j]=b[j]+a[i]-'0';
j++;
}
}
int t;
for(int i=0; i<1001; i++)
{
t=b[i];
if(b[i]>9)
{
b[i]=t%10;
b[i+1]=b[i+1]+t/10;
}
else b[i]=t;
}
int flag=0;
for(int i=1001-1; i>=0; i--)
{
if (flag || b[i])
{
flag = 1;
printf("%d",b[i]);
}
}
if (!flag) printf("0");
printf("\n");
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
View Code
UVA10106:Product
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
char str1[300],str2[300];
int d[300],f[300],c[601];
int l1,l2,l,w,e;
void init()
{
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
memset(f,0,sizeof(f));
}
int main()
{
while(scanf("%s",str1)!=EOF)
{
init();
scanf("%s",str2);
l1=strlen(str1);
l2=strlen(str2);
l=max(l1,l2);
w=l1;
e=l2;
for(int i=0; i<l; i++)
{
if(l1-1>=0)
{
d[i]=str1[l1-1]-'0';
l1--;
}
else d[i]=0;
if(l2-1>=0)
{
f[i]=str2[l2-1]-'0';
l2--;
}
else f[i]=0;
}
for(int i=0; i<w; i++)
{
for(int j=0; j<e; j++)
{
c[i+j]=c[i+j]+d[i]*f[j];
}
}
for(int i=0; i<600; i++)
{
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
int flag=0;
for(int i=600; i>=0; i--)
{
if(flag||c[i])
{
flag=1;
printf("%d",c[i]);
}
}
if(flag==0) printf("0");
printf("\n");
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
View Code
UVA465:Overflow
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>//atof函数
#include <algorithm>
#define inf 0x7fffffff// inf==2147483647
using namespace std;
char a[1001],b[1001],c[1001];
double x,y;
int main()
{
while(scanf("%s%s%s",a,b,c)!=EOF)
{
printf("%s %s %s\n",a,b,c);
x=atof(a);
y=atof(c);
if(x>inf)printf("first number too big\n");
if(y>inf)printf("second number too big\n");
if(strcmp(b,"+")==0&&x+y>inf)printf("result too big\n");
else if(strcmp(b,"*")==0&&x*y>inf)printf("result too big\n");
}
return 0;
}
/*
函数名: atof
功 能: 把字符串转换成浮点数
用 法: double atof(const char *nptr);
程序例:
*/
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
View Code
UVA10494: If We Were a Child Again
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
char a[10001],b[10001],c[10001];
long long d;
long long MOD(char * src, long long mod)//模板
{
long long len=strlen(src),i;
long long t=0;//中间变量,最终存储余数
for(i=0; i<len; i++)
{
t*=10;
t+=src[i]-'0';
if(t>=mod)
t=t%mod;
}
return t;
}
void division(char * src, long long n)//模板
{
long long len = strlen(src),i,k,t=0,s=0;
char dest[10001];
bool flag = true; //商是否有了第一个有效位,防止商首部一直出现0
for(i=0,k=0; i<len; i++)
{
t = s*10+(src[i]-48); //新余数
if(t/n>0 || t==0) //余数为0要修改商
{
dest[k++] = t/n+48,s = t%n,flag = false;
}
else //不够除,修改余数
{
s = t;
if(!flag) //商已经有有效位了,补零
dest[k++] = '0';
}
}
for(i=0; i<k; i++)
cout<<dest[i];
cout<<endl;
}
int main()
{
while(scanf("%s%s%lld",a,b,&d)!=EOF)
{
if(strcmp(b,"/")==0)
{
division(a,d);
}
else if(strcmp(b,"%")==0)
{
cout<<MOD(a,d)<<endl;
}
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
View Code