Updating a Dictionary
来源:互联网 发布:淘宝优惠券群是真的吗 编辑:程序博客网 时间:2024/06/04 19:18
Updating a Dictionary
这道题目,真的很……我前前后后做了将近5个小时,我到现在也不知道,我的代码,哪里出了问题……
其实,就是简单的模拟,用结构体,数组,就可以做完的。
突然觉得自己很差,有的时候,脑袋转不过来,还要多多练习。
WA 的代码,如果哪位同学可以知道我是在哪里错了,望指点一二,谢谢~
AC :
#include <bits/stdc++.h>using namespace std;struct node{ char a[121], b[121];}t[121], t1[121];bool cmp(struct node d, struct node c){ return strcmp(d.a, c.a)<0;}int main(){ int T; int aa[105]; int bb[105]; int cc[105]; cin>>T; while(T--) { int i=0, j=0, top=0, top1 = 0; char tt; getchar(); scanf("%c",&tt); while(tt!='}') { if(scanf("%[a-z]:%[0-9]",&t[top].a,&t[top].b)) { top++; } scanf("%c",&tt); if(tt=='}') break; } getchar(); scanf("%c",&tt); while(tt!='}') { if(scanf("%[a-z]:%[0-9]",t1[top1].a,t1[top1].b)) { top1++; } scanf("%c",&tt); if(tt=='}') break; } sort(t, t+top, cmp); sort(t1, t1+top1, cmp); i=0; j=0; int top2 = 0, top3 = 0, top4 = 0; while(i<top&&j<top1) { if(strcmp(t[i].a, t1[j].a)==0) { if(strcmp(t[i].b, t1[j].b)!=0) { cc[top4++] = i; } i++; j++; } else if(strcmp(t[i].a, t1[j].a)<0) { bb[top3++] = i; i++; } else if(strcmp(t[i].a, t1[j].a)>0) { aa[top2++] = j; j++; } } while(i<top) { bb[top3++] = i; i++; } while(j<top1) { aa[top2++] = j; j++; } if(top2==0&&top3==0&&top4==0) { cout<<"No changes"<<endl; } if(top2) { printf("+"); for(i=0;i<top2-1;i++) { printf("%s,", t1[aa[i]].a); } printf("%s\n", t1[aa[i]].a); } if(top3) { printf("-"); for(i=0;i<top3-1;i++) { printf("%s,",t[bb[i]].a); } printf("%s\n", t[bb[i]].a); } if(top4) { printf("*"); for(i=0;i<top4-1;i++) { printf("%s,", t[cc[i]].a); } printf("%s\n", t[cc[i]].a); } cout<<endl; } return 0;}
WA :
#include <bits/stdc++.h>using namespace std;struct node{ char a[121], b[121];}t[121], t1[121];bool cmp(struct node d, struct node c){ if(strcmp(d.a, c.a) < 0) return true; else return false;}char r[121][121];char e[121][121];char w[121][121];int main(){ int T; cin>>T; while(T--) { for(int i=0;i<121;i++) { memset(t[i].a, '\0', sizeof(t[i].a)); memset(t[i].b, '\0', sizeof(t[i].b)); } for(int i=0;i<121;i++) { memset(t1[i].a, '\0', sizeof(t1[i].a)); memset(t1[i].b, '\0', sizeof(t1[i].b)); } memset(r, '\0', sizeof(r)); memset(e, '\0', sizeof(e)); memset(w, '\0', sizeof(w)); int i=0, j=0, top=0; char n[121], m[121]; scanf("%s", n); scanf("%s", m); while(n[i]!='}') { if(n[i]=='{'||n[i]==',') { i++; int op = 0; while(n[i]!=':') { t[top].a[op++] = n[i++]; } } if(n[i]==':') { i++; int op = 0; while(n[i]!=','&&n[i]!='}') { t[top].b[op++] = n[i++]; } top++; } } int top1 =0; i = 0; while(m[i]!='}') { if(m[i]=='{'||m[i]==',') { i++; int op = 0; while(m[i]!=':') { t1[top1].a[op++] = m[i++]; } } if(m[i]==':') { i++; int op = 0; while(m[i]!=','&&m[i]!='}') { t1[top1].b[op++] = m[i++]; } top1++; } } sort(t, t+top, cmp); sort(t1, t1+top1, cmp); i=0; j=0; int top2 = 0, top3 = 0, top4 = 0; while(i<top&&j<top1) { if(strcmp(t[i].a, t1[j].a)==0) { if(strcmp(t[i].b, t1[j].b)!=0) { strcpy(w[top4++], t[i].a); } i++; j++; } else if(strcmp(t[i].a, t1[j].a)<0) { strcpy(e[top3++], t[i].a); i++; } else if(strcmp(t[i].a, t1[j].a)>0) { strcpy(r[top2++], t1[j].a); j++; } } while(i<top) { strcpy(e[top3++], t[i].a); i++; } while(j<top1) { strcpy(r[top2++], t1[j].a); j++; } if(top2) { printf("+"); for(i=0;i<top2-1;i++) { printf("%s", r[i]); printf(","); } printf("%s", r[i]); cout<<endl; } if(top3) { printf("-"); for(i=0;i<top3-1;i++) { printf("%s", e[i]); printf(","); } printf("%s", e[i]); cout<<endl; } if(top4) { printf("*"); for(i=0;i<top4-1;i++) { printf("%s", w[i]); printf(","); } printf("%s", w[i]); cout<<endl; } if(top2==0&&top3==0&&top4==0) { cout<<"No changes"<<endl; } cout<<endl; } return 0;}
这是WA改完之后的代码:AC
#include <bits/stdc++.h>using namespace std;struct node{ char a[121], b[121];}t[121], t1[121];bool cmp(struct node d, struct node c){ if(strcmp(d.a, c.a) < 0) return true; else return false;}char r[121][121];char e[121][121];char w[121][121];int main(){ int T; cin>>T; while(T--) { for(int i=0;i<121;i++) { memset(t[i].a, '\0', sizeof(t[i].a)); memset(t[i].b, '\0', sizeof(t[i].b)); } for(int i=0;i<121;i++) { memset(t1[i].a, '\0', sizeof(t1[i].a)); memset(t1[i].b, '\0', sizeof(t1[i].b)); } memset(r, '\0', sizeof(r)); memset(e, '\0', sizeof(e)); memset(w, '\0', sizeof(w)); int i=0, j=0, top=0; char n[121], m[121]; scanf("%s", n); scanf("%s", m); while(n[i]!='}') { if(n[i]=='{'||n[i]==',') { i++; if(n[i]=='}')//添加 break;//添加 int op = 0; while(n[i]!=':') { t[top].a[op++] = n[i++]; } } if(n[i]==':') { i++; int op = 0; while(n[i]!=','&&n[i]!='}') { t[top].b[op++] = n[i++]; } top++; } } int top1 =0; i = 0; while(m[i]!='}') { if(m[i]=='{'||m[i]==',') { i++; if(m[i]=='}')//添加 break;//添加 int op = 0; while(m[i]!=':') { t1[top1].a[op++] = m[i++]; } } if(m[i]==':') { i++; int op = 0; while(m[i]!=','&&m[i]!='}') { t1[top1].b[op++] = m[i++]; } top1++; } } sort(t, t+top, cmp); sort(t1, t1+top1, cmp); i=0; j=0; int top2 = 0, top3 = 0, top4 = 0; while(i<top&&j<top1) { if(strcmp(t[i].a, t1[j].a)==0) { if(strcmp(t[i].b, t1[j].b)!=0) { strcpy(w[top4++], t[i].a); } i++; j++; } else if(strcmp(t[i].a, t1[j].a)<0) { strcpy(e[top3++], t[i].a); i++; } else if(strcmp(t[i].a, t1[j].a)>0) { strcpy(r[top2++], t1[j].a); j++; } } while(i<top) { strcpy(e[top3++], t[i].a); i++; } while(j<top1) { strcpy(r[top2++], t1[j].a); j++; } if(top2) { printf("+"); for(i=0;i<top2-1;i++) { printf("%s", r[i]); printf(","); } printf("%s", r[i]); cout<<endl; } if(top3) { printf("-"); for(i=0;i<top3-1;i++) { printf("%s", e[i]); printf(","); } printf("%s", e[i]); cout<<endl; } if(top4) { printf("*"); for(i=0;i<top4-1;i++) { printf("%s", w[i]); printf(","); } printf("%s", w[i]); cout<<endl; } if(top2==0&&top3==0&&top4==0) { cout<<"No changes"<<endl; } cout<<endl; } return 0;}
就只是在原来的基础上加了几行……
比如说{}就跳不出来,自己没想到的输入,感觉真的很……
另外,特别感谢CXS同学的指点,大神,余生多多指教……
阅读全文
0 0
- uva12504 Updating a Dictionary
- Updating a Dictionary
- 12504 - Updating a Dictionary
- 12504 - Updating a Dictionary
- UVA12504 - Updating a Dictionary
- 12504 - Updating a Dictionary
- UVA12504 Updating a dictionary
- UVA12504--Updating a Dictionary
- Updating a Dictionary
- UVA - 12504 Updating a Dictionary
- UVa 12504 - Updating a Dictionary
- 更新字典(Updating a Dictionary)
- UVA - 12504 Updating a Dictionary
- CSU 1113 Updating a Dictionary
- Uva - 12504 - Updating a Dictionary
- CSU 1113 Updating a Dictionary
- UVA 12504 Updating a Dictionary
- *UVa 12504 - Updating a Dictionary
- 有客远来
- 搭建个人博客-hexo+github
- Java NIO 之阻塞与非阻塞
- PAT (Advanced Level) Practise 1109 Group Photo (25)
- 排序算法
- Updating a Dictionary
- nodejs学习(一)读文件,写文件,文件信息
- jq 添加元素
- [JZOJ5135][SDOI省队集训2017]逆序对
- 页面自动执行(加载)js的几种方法
- ZJOI2005独木舟上的旅行
- c++用户界面编程
- Cmake如何编译Qt程序
- Spring Bean的作用域