更新字典 (Updating a Dictionary,UVa12504)

题目描述:

解题思路:

1.根据:和,获得字符串

2.使用两个map进行比较;

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <string>
 4 #include <map>
 5 using namespace std;
 6 map<string, string>::iterator it;
 7 map<string,string> dict[2];
 8 string str[105];
 9 int main(int argc, char *argv[])
10 {
11     int t ;
12     cin >> t;
13     while(t--)
14     {
15         dict[0].clear(), dict[1].clear();
16         for(int i=0;i<2;i++)
17         {
18             string s,t1,t2;
19             cin >> s ;
20             int j=1,len = s.size() ;
21             while(j < len && len > 2)
22             {
23                 while(s[j]!=‘:‘) t1 += s[j++] ; ++j ;
24                 while(s[j]!=‘,‘ && s[j]!=‘}‘) t2 += s[j++] ; ++j ;
25                 dict[i][t1] = t2 ;
26                 t1 = t2 = "" ;
27             }
28         }
29         int a=0,s=0,m=0;
30         for(it=dict[1].begin();it != dict[1].end();it++)
31             if(!dict[0].count(it->first)) str[a++] = it->first;
32         if(a)
33         {
34             sort(str,str+a);
35             cout << "+" << str[0]  ;
36             for(int i = 1; i < a; ++i) cout << ‘,‘ << str[i];
37             puts("");
38         }
39         for(it=dict[0].begin();it != dict[0].end();it++)
40             if(!dict[1].count(it->first)) str[s++] = it->first;
41         if(s)
42         {
43             sort(str,str+s);
44             cout << "-" << str[0]  ;
45             for(int i = 1; i < s; ++i) cout << ‘,‘ << str[i];
46             puts("");
47         }
48         for(it=dict[1].begin();it != dict[1].end();it++)
49             if(dict[0].count(it->first)&&dict[0][it->first] != it->second) str[m++] = it->first;
50         if(m)
51         {
52             sort(str,str+m);
53             cout << "*" << str[0]  ;
54             for(int i = 1; i < m; ++i) cout << ‘,‘ << str[i];
55             puts("");
56         }
57         if(!(a || s || m)) puts("No changes");
58         puts("");
59     }
60     return 0;
61 }

原文地址:https://www.cnblogs.com/secoding/p/9495592.html

时间: 2024-11-06 09:32:40

更新字典 (Updating a Dictionary,UVa12504)的相关文章

UVa 12504 Updating a Dictionary(更新字典)

题意  比较两个字典  按字典序输出所有添加 删除 修改的项   如果没有任何更新  输出  No changes STL map的应用  对比两个字典  注意开始字符串的处理和字典可以为空 #include<bits/stdc++.h> using namespace std; map<string, string> d[2]; map<string, string>::iterator it; const int N = 105; string s, a, b, t

【UVA】12504 - Updating a Dictionary(map,string,vector模拟)

一般的模拟题,一开始WA,可能是用string的容器放char,改成string就过了 14073581 12504 Updating a Dictionary Accepted C++ 0.032 2014-08-21 07:12:19 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<st

关于erlang中的进程字典(process dictionary)的新理解及其访问速度 (copy来的)

之前对于erlang的进程字典了解的不够清楚,只是知道put().get()函数,即存值和取值,而每个put.get中都有自己的一对Key--Value(键值对)与之对应.一个Key对应一个Value.在erlang中,启动进程节点之后,进程字典的put.get的值是对缓存的处理,而对数据库的操作,相当于是对硬盘的一个操作,可以理解成是一个数据的备份. 举个简单的例子:在游戏中都有好友操作,启动服务之后,玩家点击添加好友操作,进程的节点已经开启,先从内存中获取玩家的进程字典的Value的值,这里

JavaScript中创建字典对象(dictionary)实例

这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象仅仅是个数组,无法提供通过关键字来获取保存的数据,jQuery源码中提供了一种非常好的方式来解决这个问题,先看一下源码: 复制代码代码如下: function createCache() { var keys = []; function cache(key, value) {  // Use (k

UVA 12504 Updating a Dictionary

题目链接:https://vjudge.net/problem/UVA-12504 题目翻译摘自<算法禁赛入门经典> 题目大意 在本题中,字典是若干键值对,其中键为小写字母组成的字符串,值为没有前导零或正号的非负整数(-4,03 和 +77 都是非法的,注意该整数可以很大).输入一个旧字典和一个新字典,计算二者的变化.输入的两个字典中键都是唯一的,但是排列顺序任意. 输入包含两行,各包含不超过100个字符,即旧字典和新字典.输出格式如下: 如果至少有一个新增键,打印一个“+”号,然后是所有新增

字典学习(Dictionary Learning)

0 - 背景 0.0 - 为什么需要字典学习? 这里引用这个博客的一段话,我觉得可以很好的解释这个问题. 回答这个问题实际上就是要回答“稀疏字典学习 ”中的字典是怎么来的.做一个比喻,句子是人类社会最神奇的东西,人类社会的一切知识无论是已经发现的还是没有发现的都必然要通过句子来表示出来(从某种意义上讲,公式也是句子).这样说来,人类懂得的知识可要算是极为浩繁的.有人统计过人类每天新产生的知识可以装满一个2T(2048G)大小的硬盘.但无论有多少句子需要被书写,对于一个句子来说它最本质的特征是什么

repeater绑定数组、哈希表、字典 ArrayList/HashTable,Dictionary为datasource

原文发布时间为:2009-11-19 -- 来源于本人的百度文章 [由搬家工具导入] repeater绑定数组、哈希表、字典datasource为ArrayList/HashTable,Dictionary时,范例 Default7.aspx 前台页面:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default7.aspx.cs" Inherits="Defaul

Uva 511 Updating a Dictionary

大致题意:用{ key:value, key:value, key:value }的形式表示一个字典key表示建,在一个字典内没有重复,value则可能重复 题目输入两个字典,如{a:3,b:4,c:10,f:16}  {a:3,c:5,d:10,ee:4} 于新字典相比,找出旧字典的不同,并且输出用相应格式,增加的用'+',如 +d,ee 减少的用'-',如 -b,f value变化的用*,如 *c 没有不同则输出"No changes"" 如果使用java,则可以用Tre

CSU 1113 Updating a Dictionary(map容器应用)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为一个关键字对应一个值,输入格式如下: {a:3,b:4,c:10,f:6} {a:3,c:5,d:10,ee:4}冒号前面的表示关键字,冒号后面的数字表示值,关键字由小写字母组成.现在让你判断,如果新的字典相对于原来的字典有新增的关键字以以下格式输出 :+key1,key2,....如果新的字典相对