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           

 

你可能感兴趣的:(T)