From Admin
Begin2 - Unit1 - 扫雷
背景 Background
这里是TYVJ-begin2系列的第一道,欢迎您的到来。
这个系列主要是帮助NOIP普及组的朋友在赛场上获得一个较好的成绩设计的一个配套题库
UNIT1主要是针对一些模拟题、简单的数据结构(栈和队列)、以及简单的高精度训练
共10道
描述 Description
小菜二白在用电脑的过程中突然发现Windows还有自带的游戏这下可把二白乐坏了。。可是新的问题随之而来。。就是二白不会玩儿。这不他又迷上扫雷了。来找你帮忙了。。
二白已经知道了雷(用‘*’表示)的分布地点了,。可是他却不知道其余地方的数字代表这什么。细心的你给他解释道:“点开的数字是几,则说明该数字旁边的8个位置中有几个雷”。
现在已知一个雷的分布图,而你的任务就是把他的数字图形计算出来。
例:
地雷分布 数字分布
0*0*0 1*2*1
00000 11211
00000 00000
(注意,地雷分布中,不光是以0来表示无地雷,其他数字都可以表示无地雷)
下面的就看你了。。。
输入格式 Input Format
第一行 两个整数n,m分别表示行数和列数。(0<n<2000,0<m<2000)
第二行到第N+1 行
输入雷的排布图0表示空地。*表示雷
输出格式 Output Format
N行,
雷的数字排布图。
样例输入 Sample Input
3 5
0*0*0
00000
00000
样例输出 Sample Output
1*2*1
11211
00000
时间限制 Time Limitation
1s
注释 Hint
不要想的太多!
来源 Source
tyvj原创
以下想问一个问题:::
C语言中,定义char型,题目说是2000*2000【max】
但是。。。用char a[2000][2000];
系统会报错。。。
此题测试数据最后一个就是极其变态的。。。
于是我就只有80分。。。
Vijos compatible layer: 1.2 build 100204
Judge status: RuntimeError
VijosNT Judger: 1.2 build 100318
Compiler: G++
g++ -O2 -g -otest.exe test.cpp
Test #1: Accepted... 0ms
Test #2: Accepted... 0ms
Test #3: Accepted... 0ms
Test #4: Accepted... 78ms
Test #5: Runtime Error
C0000005
EXCEPTION_ACCESS_VIOLATION
Attempt to read 30303034
Traceback: test.cpp at line 13
Total score: 80, time usage: 78ms
求各位大牛::::
怎样才能使C中定义的char数组更多一些。。。。。
不要求多少,只要求能到2100*4200就行了。。。
或者此题有另种解法的。。。说一下。。。
谢各位神牛!!!!不尽感激!!!!
修改后代码:
main()
{
int n,m,i,j;
scanf("%d %d\n",&n,&m);
char **b,c;
b= (char **)malloc( (n+2) * sizeof(char) );
for( i = 0 ; i < n+2 ; i++ )
b[i] = (char *)malloc( (m+2) * sizeof(char) ); /*插入这个就行了*/
for(i=0;i<n+2;i++)
for(j=0;j<m+2;j++)
b[i][j]='0';
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{c=getchar();
if(c=='*')
{b[i][j]='*';
if(b[i-1][j-1]!='*') b[i-1][j-1]++;
if(b[i-1][j]!='*') b[i-1][j]++;
if(b[i+1][j-1]!='*') b[i+1][j-1]++;
if(b[i+1][j]!='*') b[i+1][j]++;
if(b[i-1][j+1]!='*') b[i-1][j+1]++;
if(b[i+1][j+1]!='*') b[i+1][j+1]++;
if(b[i][j-1]!='*') b[i][j-1]++;
if(b[i][j+1]!='*') b[i][j+1]++;
}
}
c=getchar();
}
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
printf("%c",b[i][j]);
printf("\n");
}
}
20分。第一个点过了。后面全部
Runtime Error.....