欢迎访问皮皮网官网
皮皮网

【通达信主力抱团源码】【requests源码解析】【vb checksum源码】c扫雷源码

时间:2024-12-26 00:58:17 分类:知识 来源:家谱源码之家

1.扫雷 c语言代码 告诉我~~
2.c语言怎么变的雷源出扫雷

c扫雷源码

扫雷 c语言代码 告诉我~~

       北京理工大学电子信息谢锦峰的答案,只要不是雷源通达信主力抱团源码很奇怪的输入就应该可以过。

       然而北理网络教室的雷源requests源码解析一个隐藏用例过不了。艹

       #include<stdio.h>

        struct lei

        { int n,雷源vb checksum源码m;

        char ch[][];

        };

       static struct lei work[];

       void output(int ii);

       int jishu(int j,int k,int ii);

       void main()

       { int pd1=1,pd2=1; int i=1,j,k;

       int flag=1;

       while(flag)

        { scanf("%d%d",&pd1,&pd2);getchar();

        //printf("%d,%d\n",pd1,pd2);

        if(pd1==0||pd2==0) flag=0;

        else

        { work[i].n=pd1;

        work[i].m=pd2;

        for(j=1;j<=work[i].n;j++)

        { for(k=1;k<=work[i].m;k++)

        scanf("%c",&work[i].ch[j][k]);

        getchar();

        }

        i++;

        }

        }

        /*for(j=1;j<=work[i].n;j++)

        { for(k=1;k<=work[i].m;k++)

        printf("%c,",&work[i].ch[j][k]);

        printf("\n");

        }*/

        int ii;

        for(ii=1;ii<=i-1;ii++)

        { if(ii==1)printf("Field #%d:\n",ii);

        else printf("\nField #%d:\n",ii);

        output(ii);

        //if(ii==1&&i!=1)printf("\n");

        }

       }

       void output(int ii)

       { int j,k;

        for(j=1;j<=work[ii].n;j++)

        { for(k=1;k<=work[ii].m;k++)

        { if(work[ii].ch[j][k]=='*')

        printf("*");

        else

        { printf("%d",jishu(j,k,ii));

        }

        }

        printf("\n");

        }

       }

       int jishu(int j,int k,int ii)

       { int ji,ki,count=0;

        if(j==1&&k==1)

        { if(work[ii].ch[1][2]=='*')count++;

        if(work[ii].ch[2][1]=='*')count++;

        if(work[ii].ch[2][2]=='*')count++;

        return count;

        }

        if(j==1&&k==work[ii].m)

        { if(work[ii].ch[1][k-1]=='*')count++;

        if(work[ii].ch[2][k-1]=='*')count++;

        if(work[ii].ch[2][k]=='*')count++;

        return count;

        }

        if(j==work[ii].n&&k==1)

        { if(work[ii].ch[j-1][1]=='*')count++;

        if(work[ii].ch[j-1][2]=='*')count++;

        if(work[ii].ch[j][2]=='*')count++;

        return count;

        }

        if(j==work[ii].n&&k==work[ii].m)

        { if(work[ii].ch[j-1][k]=='*')count++;

        if(work[ii].ch[j][k-1]=='*')count++;

        if(work[ii].ch[j][k]=='*')count++;

        return count;

        }

        //四个角落处理完毕

        if(j==1&&k>1&&k<work[ii].m)

        { for(ji=1;ji<=2;ji++)

        for(ki=k-1;ki<=k+1;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        if(j==work[ii].n&&k>1&&k<work[ii].m)

        { for(ji=j-1;ji<=j;ji++)

        for(ki=k-1;ki<=k+1;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        if(j>1&&j<work[ii].n&&k==1)

        { for(ji=j-1;ji<=j+1;ji++)

        for(ki=1;ki<=2;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        if(j>1&&j<work[ii].n&&k==work[ii].m)

        { for(ji=j-1;ji<=j+1;ji++)

        for(ki=k-1;ki<=k;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        //四条边处理完毕

        if(j>1&&j<work[ii].n&&k>1&&k<work[ii].m)

        { for(ji=j-1;ji<=j+1;ji++)

        for(ki=k-1;ki<=k+1;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

       }

c语言怎么变的出扫雷

       我觉得数组更好

       先建立int

       map[][]的数组,并全部初始化为

       然后随机埋雷.被埋雷的格子=,雷的周边元素++,

       这样,一张地图就做好了.

       然后每点一个格子,就-.

       若值在大于则不用-

       若点中,即:空白点

       则将全图扫描一次,凡是和接触的格子全部点开,并用一个变量count记录该次扫描点开的新格子数,若count>0,则再扫描一次,若count=0,则不再扫描.

       当然这是比较笨的办法,不过反正格子数也不多,笨点也没关系

       用搜索的办法的话编程会麻烦点,纠正1楼

       无谓之光

       的说法,应该是搜索8个方向才对.

       我的原则是:能用数组解决的坚决不用链表,数组就是天然的链表

copyright © 2016 powered by 皮皮网   sitemap