• 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;
    }
  • 相关阅读:
    slf4j+log4j的使用
    <context:component-scan>详解
    Spring装配Bean---使用xml配置
    Spring应用上下文中Bean的生命周期
    bootstrap table 复选框选中后,翻页之后保留先前选中数据
    前后端分离的时代,如何解决前后端接口联调问题?
    利用vue-cli搭建vue项目
    vue之注册自定义的全局js函数
    小程序之图片上传
    微信小程序-蓝牙连接
  • 原文地址:https://www.cnblogs.com/symons1992/p/3406908.html
Copyright © 2020-2023  润新知