zoukankan      html  css  js  c++  java
  • hdu2074

    我先求出交叉的gird,然后再一行一行求得。感觉还可以吧。思路比较清晰,开始想的是数是第几行然后从每一行的前后开始控制,好麻烦的感觉,我就先求出来了框架再做就好做多啦!后来PE,突然发现我特殊处理n=1的时候一下子输出了2个 ,改掉以后就好了。

    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #define bug puts("bug!bug!bug!!!!!");
    char gird[100][100];
    int main(){
        int n,i,j,cnt,g;
        int isfirst=1;
        char gird[100][100],in,out,oout;
        while(~scanf("%d %c %c",&n,&in,&out)){
            if(isfirst==0) printf("
    ");
            if(n==1){
                printf("%c
    ",in);
                continue;
            }
            for(i=0;i<n;++i)
                for(j=0;j<n;++j)
                    gird[i][j]=' ';
            if( (n+1)/2%2==0 ) oout=out;
            else             oout=in;
            for(i=0;i<n;++i)    gird[i][0]=oout;
            for(i=1,j=1;i<n;++i,++j){
                if(gird[i-1][j-1]==out) gird[i][j]=in;
                else                    gird[i][j]=out;
            }
            //bug;
            for(i=n-2,j=1;i>=0;--i,++j){
                if(gird[i+1][j-1]==out) gird[i][j]=in;
                else                    gird[i][j]=out;
    
            }/*
            for(i=0;i<n;++i){
                for(j=0;j<n;++j){
                    printf("%c",gird[i][j]);
                }
                printf("
    ");
            }*/
            for(i=0;i<n;++i)    gird[n-1][i]=gird[0][i]=oout;
            for(i=1;i<n-1;++i){
                cnt=0;g=0;
                for(j=1;j<n;++j){
                    if(gird[i][j]==out||gird[i][j]==in) g++;
                    if(i==j&&i==(n-1)/2 ) g++;
                    if(cnt==1){
                        gird[i][j]=gird[i][j-1];
                    }else if(cnt==2||cnt==0){
                        if(gird[i][j-1]==out) gird[i][j]=in;
                        else                gird[i][j]=out;
                    }
                    cnt=g;
                }
            }
            gird[0][0]=gird[n-1][n-1]=gird[0][n-1]=gird[n-1][0]=' ';
            for(i=0;i<n;++i){
                for(j=0;j<n;++j){
                    printf("%c",gird[i][j]);
                }
                printf("
    ");
            }
            isfirst=0;
        }
        return 0;
    }
  • 相关阅读:
    浅谈Java并发编程系列(八)—— LockSupport原理剖析
    mac上安装MongoDB
    在Mac上搭建Python虚拟环境
    Django项目上传到AWS服务器上
    Django部署
    Getting Started with Django Rest Framework and AngularJS
    Tutorial 7: Schemas & client libraries
    Tutorial 6: ViewSets & Routers
    Tutorial 5: Relationships & Hyperlinked APIs
    Tutorial 4: Authentication & Permissions
  • 原文地址:https://www.cnblogs.com/symons1992/p/3406908.html
Copyright © 2011-2022 走看看