Time Limit: 1000MS | Memory Limit: 65535KB |
Submissions: 161 | Accepted: 43 |
Description
现在很多的程序设计语言中,赋值已经是一个不容忽视的问题,如果一个变量在未进行赋值的情况下使用,那么这个值将是不定的(哈哈,我已经被遭了好多次了)!而我写的程序用到的变量实在是太多了,又不想自己统计哪些变量是已经赋值了的,现在就请你帮我统计一下哪些变量已经赋值了。为了简化问题,我们假设最开始仅有变量a中有确定的值。变量为单个小写字母,每行恰好有三个字符,中间一个是赋值运算符'='。请编程求出含N行的程序段运行以后有哪些变量中有确定的值。并且该赋值表达式的出现顺序也即是其在程序中的相对顺序。
Input
T(1<= T <= 27) 表示测试实例个数 N (0 < N ≤ 100) 表示赋值表达式的个数 以下N行中,每行3个字符,为一条语句
Output
在一行中按字母表顺序给出所有有确定值的变量名,中间以一个空格隔开。 如果没有变量被赋值,则输出“none”。
Sample Input
3
1
a=a
2
b=c
c=d
4
b=a
c=d
d=b
e=f
Sample Output
a
none
a b d
1 #include <iostream>
2 #include <string>
3 #include <cstring>
4 #include <map>
5 using namespace std;
6
7 int main()
8 {
9 int i,j,k,T;
10 map <char,bool > mm;
11 char str[5]={'\0'};
12 cin>>T;
13 while(T--)
14 {
15 int num;
16 cin>>num;
17 //mm.clear();
18 mm.erase(mm.begin(),mm.end());
19 memset(str,0,sizeof(str));
20 mm['a'] = 1;
21 bool flag = 0;
22 for(i=1;i<=num;i++)
23 {
24 cin>>str;
25 if(str[2] == 'a')
26 flag = true;
27 //if(mm[str[2]]==1)// 用这个不能判断一个数是否存在
28 if(mm.count(str[2])==1)//count返回的是key的个数
29 //mm[str[0]] == 1;
30 mm.insert(pair<char,bool>(str[0],true));
31 }
32 if(flag==0)//flag这个变量很必须,不能用mm.size()==0
33 {
34 cout<<"none"<<endl;
35 }
36 else
37 {
38 map<char ,bool >::iterator ptr = mm.begin();
39 cout<<ptr->first;
40 ptr++;
41 for(;ptr!=mm.end();ptr++)
42 cout<<" "<<ptr->first;
43 cout<<endl;
44 }
45 cin>>unitbuf;
46 }
47 return 0;
48 }
49
50
51
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.