赋值了吗?
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