赋值问题

本文介绍了一个程序设计问题:如何通过编程方法找出经过一系列赋值操作后哪些变量具有确定的值。该程序使用C++实现,能够处理大规模的输入数据,并通过样例展示了其功能。

FJNU.1422

Description
在很多程序设计语言中,忘记给变量赋初值的错误常令人头疼。
在下面的问题中,最开始仅有变量a中有确定的值。变量为单个小写字母,
每行恰好有三个字符,中间一个是赋值运算符'='。
请编程求出含N行的程序段运行以后有哪些变量中有确定的值。

Input
第一行:M 表示有M组测试数据,每组测试数据第一行包含N(0<N<=10^6)
以下N行,每行3个字符,为一条语句

Output
如果没有,输出none否则在一行中按字母表顺序给出所有有确定值的变量名。
字母之间用一个空格隔开。

Sample Input
1
4
b=a
c=d
d=b
e=f

Sample Output
a b d

Source
oibh

My Program

#include<iostream>
using namespace std;

int main()
{
    
bool dim[26],flag;
    
char a,c,s[3];
    
int d,k,i,n,m;
    cin
>>k;
    
for(d=0;d<k;d++)
    
{
        flag
=false;
        dim[
0]=true;
        cin
>>n;
        getchar();
        
for(i=1;i<26;i++)
            dim[i]
=false;
        
for(i=0;i<n;i++)
        
{
            gets(s);
            a
=s[0];c=s[2];
            
if(dim[c-'a']==true)
                dim[a
-'a']=true;
            
else
                dim[a
-'a']=false;
        }

        
for(i=0;i<26;i++)
            
if(dim[i])
                m
=i;
        
for(i=0;i<26;i++)
            
if(dim[i])
            
{
                flag
=true;
                printf(
"%c",i+'a');
                
if(i!=m)
                    printf(
" ");
            }

        
if(!flag)
            cout
<<"none";
        cout
<<endl;
    }

    
return 0;
}

YOYO's Note: 
因为变量只用一个小写字母,所以直接开了26的数组用来计数是否有赋值。
模拟一下就好了,不过很耗时,0.04s……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值