数组开小了、运行时间过长怎么办?解决方法 环球速看料
论点一: Runtime Error
这个在OpenJudge中可能很常见,但最多的情况为:数组开小了、运行时间过长(代码冗长、方法没用对、情况考虑不到位以至于计算范围得扩大)等等例如:
(资料图)
状态: Runtime Error 源代码: //此题解为 02:奇数单增序列
includeincludeusing namespace std;int a[10],b[10];int main(){ int m=0,x=0,y=0; int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) { if(a[i]%2!=0) { x++; b[x]=a[i]; } } sort(b,b+x+1); for(int i=1;i<=x-1;i++) printf("%d,",b[i]); printf("%d",b[x]); }
修改后:
状态: Accepted
#include#includeusing namespace std;int a[5000],b[5000];int main(){ int m=0,x=0,y=0; int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) { if(a[i]%2!=0) { x++; b[x]=a[i]; } } sort(b,b+x+1); for(int i=1;i<=x-1;i++) printf("%d,",b[i]); printf("%d",b[x]); }
察觉方法:1.注意读题,一般在题中都会提到某些未知数的范围,这时,我们就要注意,在开始写代码的时候就将数组大小调整好.也可以在代码写完后再读题、查错(但不建议这么做)。当然,还有一些‘懒猪’,在一开始时就将数组开得特别大(比如说。。。我~),但是,虽说这么做方便、快捷,但有时,还是会消耗许多时间,浪费许多空间。所以,我们都得一起努力,改掉这些坏习惯。(有则改之,无则加勉)在最后,我再给大家举一个典型的例子(数组开小):
状态: Runtime Error 源代码 //此题为 7218:献给阿尔吉侬的花束
#include#include#includeusing namespace std;int f[400][400],n,m,i,j;int head,tail,q[40005],p[40005],x,y,x1,y1,b[40005];int xx[10]={-1,0,1,0},yy[10]={0,-1,0,1};int main(){ int l; scanf("%d",&l); while(l--) { scanf("%d%d",&m,&n); memset(f,0,sizeof(f));//清空 memset(b,0,sizeof(b));//清空 memset(p,0,sizeof(p));//清空 memset(q,0,sizeof(q));//清空 for (i=1;i<=m;i++) { char c[100];//***同志们注意看这里*** scanf("%s",c);//输入矩阵 for(j=1;j<=n;j++) { if (c[j-1]==".") f[i][j]=1; if (c[j-1]=="#") f[i][j]=0; if (c[j-1]=="S") { x=i; y=j; f[i][j]=1;//并改为1 } if (c[j-1]=="E") { x1=i; y1=j; f[i][j]=1; } } } head=0;tail=1;p[tail]=x;q[tail]=y;b[tail]=0;// i,j 初始位置 bool pd=0; while (head0&&l<=m&&r>0&&r<=n&&f[l][r]==1) { f[l][r]=0; tail++; p[tail]=l; q[tail]=r; b[tail]=b[head]+1; } if (l==x1&&r==y1) { cout<<B[TAIL]<<ENDL; if="" pd="1;" break;="" }="" (pd="=true)" cout<<?oop!?<<endl;="" }}
修改后:
状态: Accepted 源代码
#include#include#includeusing namespace std;int f[400][400],n,m,i,j;int head,tail,q[40005],p[40005],x,y,x1,y1,b[40005];int xx[10]={-1,0,1,0},yy[10]={0,-1,0,1};int main(){ int l; scanf("%d",&l); while(l--) { scanf("%d%d",&m,&n); memset(f,0,sizeof(f));//清空 memset(b,0,sizeof(b));//清空 memset(p,0,sizeof(p));//清空 memset(q,0,sizeof(q));//清空 for (i=1;i<=m;i++) { char c[4000]; scanf("%s",c);//输入矩阵 for(j=1;j<=n;j++) { if (c[j-1]==".") f[i][j]=1; if (c[j-1]=="#") f[i][j]=0; if (c[j-1]=="S") { x=i; y=j; f[i][j]=1;//并改为1 } if (c[j-1]=="E") { x1=i; y1=j; f[i][j]=1; } } } head=0;tail=1;p[tail]=x;q[tail]=y;b[tail]=0;// i,j 初始位置 bool pd=0; while (head0&&l<=m&&r>0&&r<=n&&f[l][r]==1) { f[l][r]=0; tail++; p[tail]=l; q[tail]=r; b[tail]=b[head]+1; } if (l==x1&&r==y1) { cout<<B[TAIL]<<ENDL; if="" pd="1;" break;="" }="" (pd="=true)" cout<<?oop!?<<endl;="" }}
当然,数组开小并不是唯一的错误,像运行时间过长(代码冗长、方法没用对、情况考虑不到位以至于计算范围得扩大)这些问题还是存在的,但这些问题的解决方案也还是只有自己,修改代码。就像在做广搜的题时,你用深搜的方法去做,一一列举,如此,就有可能时间超限。
标签:
相关推荐:
最新新闻:
- 数组开小了、运行时间过长怎么办?解决方法 环球速看料
- 《天外世界:太空人之选》现已在获准上市区域推出:全球快讯
- “健身猪”一只最高能卖8万元 食用口感不太好:每日视讯
- 世界即时看!厂商将为PS5推出"永不漂移"摇杆 可应用于精英手柄
- 《遗迹2》枪手介绍影片公开 发售日期待定-热资讯
- 天天消息!流行之王迈克尔杰克逊传记片在加州拍摄
- 虚幻5《最后生还者》粉丝恶搞视频 循声者搞笑聊天-全球最资讯
- 苹果推出黄色款iPhone14 3月14日开售 5999元起
- iPhone 15全系面板曝光:弧边实锤了
- 微信能用支付宝钱包了!:滚动
- 环球微速讯:iPhone新配色到来:科技以换壳为本
- 【环球报资讯】待机可达52天!内置10000mAh电池三防智能手机发布
- 全球速讯:恐怖生存新游《Hellspawn》上架steam 探索击溃邪教团
- 赛博朋克风ARPG《上行战场》全平台销量超100万份
- AMD显卡上线新促销:买RX 6000、RX 7000显卡送400元3A大作:每日快播
- 游戏越来越贵:去年英国游戏平均售价上涨近7%
- 世界观察:太空经营类游戏《火星地平线2:寻找生命之旅行》Steam页面上线 2024年发售
- 上海迪士尼和玲娜贝儿拥抱要排队6小时:互动一分钟 环球资讯
- 荃银高科:公司深耕水稻、玉米、小麦等主要农作物种子的研发、繁育、推广、服务及利用优质特色品种带动订单农业业务 焦点要闻
- 每日报道:云南白药年薪千万董事长离职 承诺半年内不转让股份
- 天天热讯:禁止恶俗烂梗!超20个"鸡你太美"商标被判无效
- 当前焦点!电影版《东京复仇者2》新剧照 前后篇4月6月上映
- T2正在进行裁员 声称对开发团队影响微乎其微:天天新要闻
- 胡克定律是什么
- 当前滚动:《人类:一败涂地》全球销量已超4000万套
- 全球快看点丨未成年强奸罪可判多少年
- 全球即时:《寂静岭2:重制版》新版护士形象公开身材火辣
- Take Two裁员 发行公司Private Division受波及
- 全球快播:立减205元 360°夜视摄像头仅需64元
- 美国特斯拉ModelS和X降价高达一万美元
- 13999!七彩虹RTX4090有货
- 【秒懂知识库】如何鉴别手机屏幕的好坏?
- 微软:Mac版Outlook免费
- 全球热资讯!《不要喂食猴子2099》5月25日登陆Steam 支持试玩
- 恐怖游戏《有一天你会归来:导演剪辑版》已推出|每日视讯
- PS及Switch美版《格林魔书 OnceMore》试玩版上架
- 物流金融:世界时讯
- PS5能用!2TB PCIe4固态跌破600!-世界观速讯
- 奥运健儿同款 喜德盛高端山地车127950元 当前热议
- 【秒懂知识库】选错用错损害健康 加湿器选购秘籍一般人不知道_环球速看料
- 办公神器 联想小新Pad仅需898元
- 1万毫安大容量 小米移动电源特价78元-快播报
- 退休教师工资如何计算_退休教师工资调整方案
- 《英雄联盟》新英雄“明烛”米利欧技能介绍:W增加攻击距离、大招群体解控
- 虽未官宣 第一人称射击《Neon White》Xbox版已通过评级-当前快报
- 焦点日报:方硕临危受命砍19+7 单节独得11分率队反击
- 推特词汇工具统计:COD粉丝是最“嘴臭”的玩家群体:环球滚动
- 开关游戏怎么玩
- A卡用户小心!最新驱动可能让你的PC变砖
- 世界短讯!《蚁人3》周末北美票房暴跌61% 豆瓣评分降至6.0
- 大疆正式发布DJI Ronin 4D Flex分体拓展系统,解放电影机_环球观天下
- 绽放“她光彩” 三星显示器助力女性拥抱向上的力量|全球热文
- 多名韩国艺人整形医院就诊画面遭泄露:几乎没有天然脸
- 天天热文:燕王登基:《文明6》“永乐”成有史以来最受欢迎的文明领袖
- 英伟达531.18版驱动程序出现问题 退出游戏后CPU占用率可能会更高
- 父母嫌贵拒绝给买200多元的鞋子 28岁女子瞬间崩溃 环球快看
- 育碧回应业务重组:市场迫使我们转向线上服务游戏 天天播资讯
- 天天实时:《城市:天际线2》Xbox Series版成就泄露
- 花月正春风_花月满楼
- 38节特惠!小米Redmi note11t Pro跌至1499元_天天看点
- 威马汽车复活!将全力开展复工复产-资讯
- 一加Ace 2V发布:天玑9000处理器、2299元起
- 2299元起!一加Ace 2V发布来京东参与预售可享30天无忧试用
- 大国品牌帅丰集成灶刷屏机场+央视,引爆行业声势!|天天信息
- 热头条丨外媒:《王国之泪》游戏大小凸显了Switch的硬件限制
- 演员叶彤|全球今亮点
- 307元显卡挑战3050地位
- 新学期旗开得胜 三星Galaxy Tab S8系列带来高分秘籍-世界通讯
- 真彩女王 不被定义 罗技开启个性三八妇女节|速递
- 价格屠夫小米显示器369元_世界今热点
- 一加Ace 2V全球首发Wi-Fi技术:网络不卡了
- 热推荐:基地回应大熊猫福菀被游客泼水:目前大熊猫状态稳定 未查到泼水者
- 工地食堂成大学生新打卡点:13块随便吃 好吃还实惠_环球百事通
- Netflix动画《遗迹守护者》登陆TV 确定7月开播
- 迪士尼真人版《小美人鱼》女主新照 身材好很美丽
- 韩国出新制度:一周工作时间增至69小时 打工人喜迎996 当前热门
- 2月28日蚂蚁庄园今日答案 疫情期间乘坐高铁,发现旁边有人一直咳嗽,你应该? 环球报资讯
- 3999元起:努比亚Z50 Ultra发布-全球短讯
- 性价比逆天!12代酷睿i5-12400主机低至2169元
- 短讯!努比亚Z50 Ultra星空典藏版发布:4999元
- 起售价会降低吗?2023款比亚迪汉EV现身:标配5G车机+铝合金悬架 环球看热讯
- 世界热门:一加 Ace 2V 杀疯了:12+256GB 售价 2299 元
- 前《战地》开发者新作实机演示!今晚Steam免费开测
- 谷歌发布3月安卓安全公告 修复21个高通组件漏洞
- 天天快播:Steam好评如潮解谜游戏《无尽旅图》手机版3月29日发售,首发价打骨折