设为首页 加入收藏

TOP

UVa oj AOAPC Volume 1. Elementary Problem Solving String (六)
2014-11-23 23:11:47 来源: 作者: 【 】 浏览:6
Tags:UVa AOAPC Volume Elementary Problem Solving String
list[s]);
56 int l=s,r=e;
57 if (l>=r) return;
58 while (l 59 while (l=0) r--;
60 strcpy(wordlist[l],wordlist[r]);
61 while (l 62 strcpy(wordlist[r],wordlist[l]);
63 }
64 strcpy(wordlist[r],x);
65 paixu(s,r-1);
66 paixu(r+1,e);
67 }
68 void qucf ()
69 {
70 int i,j;
71 for (i=0;i 72 if (wordlist[i][0]!='\0'){
73 for (j=i+1;j 74 if (strcmp(wordlist[i],wordlist[j]) == 0)
75 { wordlist[j][0]='\0'; }
76 }
77 }
78 }
79 }
80 int main()
81 {
82 int i=0;//countjuzi多少个句子
83 while (gets(a[i])){
84 strsmall(a[i]);//变小写
85 i++;
86 }
87 countjuzi=i;
88 chuli ();
89 fenge ();
90 paixu (0,countdanci-1);
91 qucf ();
92 shuchu ();
93 system("pause");
94 return 0;
95 }
96 心得体会:学会了字符串排序,一开始看到5000,想用冒泡混过去的……结果TLE后来发现数据量高达2,3万……尼玛啊……上块排啊……有木有。。。

第八题:644 - Immediate Decodability
大致题意:就是看有没有字符串是其他字符串的前缀……(我想到了哈夫曼树?最优树?不知道……)
题目分析:反正数据量不到10个,一个一个暴力比较就是了……
代码:
1 //史上最丑代码!!!!!!!!!!
2 #include
3 #include
4 #include
5 const int maxlen=12;
6 char a[maxlen][maxlen];
7 int main()
8 {
9 int count=0,i,j,lenmin,flag=0,leni,lenj,count1=0;
10 while (gets(a[0])){
11 flag=0;
12 for (count=1;;count++){
13 gets(a[count]);
14 if (a[count][0] == '9' && a[count][1] == '\0')
15 { count1++; break; }
16 }
17 for (i=0;i 18 leni=strlen(a[i]);
19 for (j=i+1;j 20 lenj=strlen(a[j]);
21 lenmin= leni > lenj lenj : leni;
22 if (strncmp (a[i],a[j],lenmin) == 0)
23 { flag=1; printf("Set %d is not immediately decodable\n",count1); break; }
24 }
25 if (flag) break;
26 }
27 if (!flag) printf("Set %d is immediately decodable\n",count1);
28 }
29 return 0;
30 }
31 心得体会:代码很丑,没用结构化,模块化编程……还有一个小插曲……我已开始immediately打错了,老是WA,纠结了半天才发现的。。。


第九题:10115 - Automatic Editing
大致题意:给你几个字符串替换规则,再给你个字符串,要你按规则从第一个到最后一个,对目标字符串进行替换,最后输出结果……
题目分析:主要是编字符串匹配函数和字符串插入函数……
代码:
1 #include
2 #include
3 #include
4 char before[15][100],after[15][100],juzi[300];
5 int i,lenjuzi,lenafter,lenbefore,where;
6 /////////////////////////////////////////////////////////////////////
7 int pipei ()
8 { int j,k,l,flag;
9 lenjuzi=strlen(juzi);
10 lenbefore=strlen(before[i]);
11 lenafter=strlen(after[i]);
12 //求长度要放到里面来,因为改变后,长度也变了……
13 for (j=0;j<=lenjuzi-lenbefore;j++){
14 l=j; flag=1;
15 for (k=0;k 16 if ( juzi[l]!=before[i][k] )
17 { flag=0; break; }
18 }
19 if (flag) { return j;}
20 }
21 return -1;
22 }
23 void strins ()
24 { int s,e,j,k;
25 if(lenafter>lenbefore)
26 { s=lenjuzi+1; e=lenjuzi+lenafter-lenbefore+1;//加一啥意思啊???
27 for (;s>=where+lenbefore;s--,e--){
28 juzi[e]=juzi[s];
29 }
30 }
31 else
32 { s=where+lenafter; e=where+lenbefore;
33 for (;e<=lenjuzi;s++,e++){
34 juzi[s]=juzi[e];
35 }
36 }
37 for (j=0;j 38 juzi[where]=after[i][j];
39 }
40 }
41 ///////////////////////////////////////////////////////////////////
42 int main()
4

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇调试程序 下一篇有效的使用和设计COM智能指针――..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: