OI赛题1081: Infinite Dictionaries题解

痛心疾首 算法基础篇 37 0
不断提升技能,才能在职场中立于不败之地!全网最全C++题库,助您成为编程领域的佼佼者。
A dictionary is a set of key-value pairs, for example:. As you can see, keys and values can be strings or integers. What’s more, values can also be dictionaries or variable references. Here is the formal definition of terms that will be used soon:. After assigning a slot to a slot , the left-hand slot will be holding a reference to the right-hand. For example, After executing the following commands, b[1][0] is 1, rather than 0:. Slots must be assigned before it is read or subscripted, and integers and strings cannot be subscripted. Consider the following comammd list:. will output 1, not 3. In this command, it is guaranteed that is storing a dictionary, not a string or an integer.Then d is infinite, since d[0][0][0][0][0][0]... is always d. In this command, it is guaranteed that is storing a dictionary, not a string or an integer.

A dictionary is a set of key-value pairs, for example:   {'color':'red', 'price':2, 7:'test', 100:-100}   As you can see, keys and values can be strings or integers. What’s more, values can also be dictionaries or variable references. Here is the formal definition of terms that will be used soon:   key   ::=      INTEGER | STRING value ::=      INTEGER | STRING | dict pair  ::=      key ':' value dict  ::=      '{' [pair (',' pair)*] '}' var   ::=      'a'|'b'|'c'|...|'z' slot  ::=      var('[' key ']')* lvar  ::=      slot rvar  ::=      slot | value   Here ('[' key ']')* means zero or more subscripts, [pair (',' pair)*] means zero or more key-value pairs.   Strings are always enclosed by single quotes ('') and consists of up to 10 lower-case letters. Integers always have absolute values of no more than 1000. You can insert spaces anywhere, except inside strings or integers. For example, { 'a':-1} and {'a' : -1   } are the same, but {'a b':1} and {'a':- 1} are both illegal.   Your task is to execute a series of commands and print the results. There are 3 kinds of commands:   1. Assignment: =   After assigning a slot to a slot (rather than a value), the left-hand slot will be holding a reference to the right-hand. For example, After executing the following commands, b[1][0] is 1, rather than 0:   a = {0:0} b = {} b[1] = a a[0] = 1   Slots must be assigned before it is read or subscripted, and integers and strings cannot be subscripted. Consider the following comammd list:   c = {} c[0] = 3 c[1] = c[0] d[0] = 'i' c = d d = c[1]['a'] c[2][2] = 2   The first three commands are legal, but the next two are both illegal because slot d must be assigned before it is read or subscripted. The last three are also illegal.   2. Length: length()   Output the number of key-value pairs in the slot. Note that nested pairs are not counted. For example:   a = {0: {0:0, 1:1}} length(a)   will output 1, not 3. In this command, it is guaranteed that is storing a dictionary, not a string or an integer.   3. Infinity test: test()   If the slot can be subscripted indefinitely, output 1. Otherwise, output 0. For example, after executing the following command list:   d = {} d[0] = d   Then d is infinite, since d[0][0][0][0][0][0]... is always d. In this command, it is guaranteed that is storing a dictionary, not a string or an integer.

OI赛题1081: Infinite Dictionaries题解
-第1张图片-东莞河马信息技术
(图片来源网络,侵删)
不断挑战自我,才能突破极限!全网最全C++题库,让您在编程道路上越走越远。

标签: OI赛题1081: Infinite Dictionaries题解