习题5_9 找bug(Bug Hunt, ACM/ICPC Tokyo 2007, UVa1596)

题目描述:

        输入并模拟执行一段程序,输出第一个bug所在的行。每行程序有两种可能:
        1.数组定义,格式为arr[size]。例如a[10]或者b[5],可用下标分别是 0 ~ 9 和 0 ~ 4 。定义之后所有元素均为未初始化状态。输入保证数组名是单个字母。
        2.赋值语句,格式为arr[index]=value。例如a[0]=3或者a[a[0]]=a[1]。

        赋值语句可能会出现两种bug:下标index越界;使用未初始化的变量(index和value都可能出现这种情况)
        程序不超过1000行,每行不超过80个字符且所有常数均为小于231的非负整数。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

AC代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<sstream>
#include<map>
#include<vector>
using namespace std;

map<char, int> arr_range;              // 数组名,数组长度 
map<char, map<int, int> > arr_map;     // 数组名映射到数组
bool flag = true;                      // 目前代码是否出错,true为正确 
 
int find_num(const string& cmd) {
   
	int num, idx;
	if(!flag) 
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值