题目描述:
输入并模拟执行一段程序,输出第一个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)