SWUST 167

赋值了吗?

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           
原文地址:https://www.cnblogs.com/hxsyl/p/2687267.html