当前位置: 首页 > news >正文

学做效果图网站有哪些软件有哪些大良营销网站建设服务

学做效果图网站有哪些软件有哪些,大良营销网站建设服务,网站免费正能量链接,网站设计的关键题目链接 https://vjudge.net/problem/UVA-1596 题目大意 输入并模拟执行一段程序,输出第一个bug所在的行。每行程序有两种可能: 数组定义,格式为arr[size]。例如a[10]或者b[5],可用下标分别是0~9和0~4…

题目链接

https://vjudge.net/problem/UVA-1596

题目大意

输入并模拟执行一段程序,输出第一个bug所在的行。每行程序有两种可能:

数组定义,格式为arr[size]。例如a[10]或者b[5],可用下标分别是0~9和0~4。定义之后所有元素均为未初始化状态。
赋值语句,格式为arr[index]=value。例如a[0]=3或者a[a[0]]=a[1]。

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

解题思路

因为存在嵌套,所以解析一个数组变量的值要用递归或者栈,用map维护数组名到数组信息结构体的映射,数组信息结构体应该包括数组的大小,以及该数组各个下标的值(用map< int, int >来记录)。具体实现细节见代码和注释。

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
#define endl '\n';
const int maxn = 1e3 + 10;
const int INF = 0x3fffffff;
const int mod = 1e9 + 7;
struct Arra {               // 数组信息结构体int size;               // 该数组的大小map<int, int> value;    // 该数组各下标的值
};
map<string, Arra> ArrInfo;  // 数组名到数组信息结构体的映射
const string err = "!!!";// 声明、创建一个数组
void createArr(const string& s) {int pos = s.find('[');string arrName = s.substr(0, pos);int size = 0;for (int i = pos + 1; i < s.size() - 1; i++) {size = size * 10 + (s[i] - '0');}ArrInfo[arrName] = {size};
}/*得到一个数组对应下标位置的值,如果该值不存在则函数返回值返回-1(题目保证变量值不会有负数,所以可以用-1代表值不存在),arrName是一个引用变量,正常情况下返回数组变量名,在该变量名不存在的时候会捎带回一个"!!!"来表示数组名不存在,index也是引用变量,正常情况下返回数组下标(用于给等号左边的数组赋值),在数组的该下标位置未初始化值的时候捎带回-1
*/
int getValue(const string& s, string &arrName, int& index) {int pos = s.find('[');arrName = s.substr(0, pos);     // 分割出数组变量名if (!ArrInfo.count(arrName)) {  // 数组变量名不存在arrName = err;return -1;}index = 0;string tmps;int tmpi = 0;if (isdigit(s[pos + 1])) {  // []内是数字,直接得到数值for (int i = pos + 1; i < s.size(); i++) {if (s[i] == ']')break;tmpi = tmpi * 10 + (s[i] - '0');}index = tmpi;} else {    // []内是一个数组名,递归获取值index = getValue(s.substr(pos + 1), tmps, tmpi);}auto &value = ArrInfo[arrName].value;if (tmpi == -1 || index >= ArrInfo[arrName].size) {index = -1;return -1;}if (!value.count(index)) {return -1;}return value[index];
}void solve() {string line;while (cin >> line, line[0] != '.') {int cnt = 1;ArrInfo.clear();if (line.find('=') == -1) {   // 没有=,是数组初始化语句createArr(line);}string s;int ans = 0;while (cin >> s, s[0] != '.') {cnt++;if (ans != 0)continue;int pos = s.find('=');if (pos == -1) {createArr(s);continue;}string arrName1, arrName2;int index1, index2;getValue(s.substr(0, pos), arrName1, index1);if (arrName1 == err || index1 == -1) {ans = cnt;continue;}int a2 = 0;if (isdigit(s[pos + 1])) {for (int i = pos + 1; i < s.size(); i++) {a2 = a2 * 10 + (s[i] - '0');}} else {a2 = getValue(s.substr(pos + 1), arrName2, index2);}if (a2 == -1) {ans = cnt;continue;}ArrInfo[arrName1].value[index1] = a2;}cout << ans << endl;}
}int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout << fixed;cout.precision(18);solve();return 0;
}
http://www.yayakq.cn/news/285994/

相关文章:

  • 开发网站app公司大望路网站制作
  • 宁波企业制作网站百度推广投诉中心
  • 网易企业邮箱app下载windows优化大师免费
  • 电商网站建设建议网站制作价格行情
  • 重庆专业网站推广费用网站建设教程哪个好
  • app设计网站模板wordpress 安卓 生成
  • 做网站外链湖州网站优化
  • 企业网站维护怎么做网站建设流程分几步
  • 北京网站建设运营中石化石油工程建设公司网站
  • 手机网站首页模板网站备案信息保护
  • 番禺网站建设报价wordpress优化方法
  • 网站页面不更新南昌专业做网站公司有哪些
  • 洛阳建站洛阳市网站建设企业年报网上申报
  • 营销型网站盈利方案公司网站制作哪家公司好
  • 医院网站html模板wordpress商品宣传
  • 长春网站建设方案记事本里做网站 怎么把字体
  • 做海外贸易的网站名叫什么wordpress导入媒体查看
  • o2o平台网站开发开发公司 张庆
  • 网上购物系统功能模块厦门seo培训学校
  • 国际化网站网页设计网站页面代码
  • 网站开发适合什么工作l林州住房建设部官方网站
  • 淮北网站设计建筑人才招聘网站平台
  • 成都市住房与城乡建设局网站深圳地图
  • 网站建设合同细节网站建设目标初步目标
  • 什么网站合适做流量去柬埔寨做网站是传销吗
  • 枣庄建设网站推广引流的10大渠道
  • 提交网站给百度node.js wordpress
  • 网站链接推广怎么赚钱做云词图的网站
  • 网店网站模板开源购物商城
  • 网站建设需求调查连云港公司企业网站建设