这是自从上星期1以来再一次恢复写程序.能恢复我感觉很好,虽然困难丝毫没有减少还增加了.
我仍然对那个ACM的题依次做,在继几个AC率很低的问题以后,遇到了连续的简单问题. 除了一道交换机的问题以外,其他的不是很容易就是做过雷同的,一直来到这个 MINE的题目.其实我本不想做,因为通过率有42%,但作为经典,还是重视一下吧:
#include <stdio.h>
#define N 50
bool mine[N][N];
char display[N][N];
int dx[8]={-1,-1,-1,0,1,1,1,0};
int dy[8]={-1,0,1,1,1,0,-1,-1};
int Around(int x,int y,int n){
int sum=0;
int a,b;
for(int i=0;i<=7;i++){
a=x+dx[i];
b=y+dy[i];
if(a>=0&&a<n&&b>=0&&b<n&&mine[a][b]==true){
sum++;
}
}
return sum;
}
char itoc(int sum){
return sum+48;
}
void Extend(int x,int y,int n){
int a,b,sum=0;
if((sum=Around(x,y,n))==0){
display[x][y]=' ';
for(int i=0;i<=7;i++){
a=x+dx[i];
b=y+dy[i];
if(a>=0&&a<n&&b>=0&&b<n&&mine[a][b]==false)
if(display[a][b]=='O')
Extend(a,b,n);
}
}
else display[x][y]=itoc(sum);
}
void checkMine(int x,int y,int n){
if(y>=0&&y<n&&x>=0&&x<n){
if(mine[x][y]==true)
{
printf("You Lose!/n");
return;
}
else{
Extend(x,y,n);
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%c",display[i][j]);
}
printf("/n");
}
}
else{printf("wrong input/n");}
}
int main(){
int n=10;
mine[8][9]=mine[3][3]=mine[1][1]=true;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
display[i][j]='O';
}
}
checkMine(0,0,n);
printf("/n");
checkMine(3,1,n);
return 0;
}
空格代表点开的地方,0代表未知的地方.
我高兴的是时间用的不长,中间发现由于不了解规则而疏忽的地方但马上便更改过来了.
简单的问题仍然不到一半的通过率,足见考试的紧张程度.
就是这样,稍微测试一下,有问题还请提出.
学校似乎又改变主意了,可能仍然多凑人参赛.虽然那个庄B胖子答应可以培训,却多次诓他们,这次星期5就是明天还说讲课.
让他们见鬼去吧,SB学校,SB庄胖子,SB阙丽.让我参加比赛我也不去了,除非跪在地上求苦苦哀求老子!