• Five Tiger 湘潭省赛 vector的应用


    题目来源:

    http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1173

    代码如下:

    vector< pair<int, int> >Little5; // 每个单元是一个点的坐标
    vector< vector<pair<int,int > > >AllLittle5; // 每个单元放的是5个点,即一个点数组
    void Init(){ //计算所有5虎的坐标
        Little5.clear();
        Little5.push_back(make_pair(0,0));
        Little5.push_back(make_pair(0,2));
        Little5.push_back(make_pair(1,1));
        Little5.push_back(make_pair(2,0));
        Little5.push_back(make_pair(2,2));
        AllLittle5.clear();
        int i,j,k,x,y;
        vector< pair<int, int> > tmp;
        for(i=0; i<3; i++){
            for(j=0;j<3;j++){
                tmp.clear();
                for(k=0; k<Little5.size(); k++){
                    x=i+Little5[k].first;
                    y=j+Little5[k].second;
                    tmp.push_back(make_pair(x,y));
                }
                AllLittle5.push_back(tmp);
            }
        }
    }
    int g[8][8]; // 坐标从0开始
    
    int getBig5(){
        return g[0][0] && g[0][4] && g[2][2] && g[4][0] && g[4][4];
    }
    int getLittle5(){
        vector<pair<int,int> >tmp;
        int i,k,x,y,ans=0;
        for(k = 0 ; k< AllLittle5.size(); k++){
            tmp=AllLittle5[k];
            for(i=0 ; i<tmp.size(); i++){
                x=tmp[i].first;
                y=tmp[i].second;
                if(!g[x][y])
                    break;
            }
            if(i == tmp.size() ) ans++;
        }
        return ans;
    }
    int getTongtian(){
        int ans=0,i,j;
        for(i=0 ; i<5; i++){
            for(j=0; j<5; j++){
                if(!g[i][j])
                    break;
            }
            if(j==5) ans++;
        }
        for(j=0;j<5;j++){
            for(i=0;i<5;i++){
                if(!g[i][j])
                    break;
            }
            if(i==5) ans++;
        }
        if( g[0][0] && g[1][1] && g[2][2] && g[3][3] && g[4][4] ) ans++;
        if( g[0][4] && g[1][3] && g[2][2] && g[3][1] && g[4][0] ) ans++;
        return ans;
    }
    int get4(){
        int ans=0;
        if(g[0][3] && g[1][2] && g[2][1] && g[3][0] ) ans++;
        if(g[1][0] && g[2][1] && g[3][2] && g[4][3] ) ans++;
        if(g[1][4] && g[2][3] && g[3][2] && g[4][1] ) ans++;
        if(g[0][1] && g[1][2] && g[2][3] && g[3][4] ) ans++;
        return ans;
    }
    int get3(){
        int ans=0;
        if( g[0][2] && g[1][1] && g[2][0] ) ans++;
        if( g[2][0] && g[3][1] && g[4][2] ) ans++;
        if( g[2][4] && g[3][3] && g[4][2] ) ans++;
        if( g[0][2] && g[1][3] && g[2][4] ) ans++;
        return ans;
    }
    int xiaodou(){
        int i,j,ans=0;
        for(i=0; i<4; i++)
        {
            for(j=0; j<4 ;j++){
                if( g[i][j] && g[i][j+1] && g[i+1][j] && g[i+1][j+1] ) ans++;
            }
        }
        return ans;
    }
    char str[8][8];
    int  main(){
        int t,i,j,ans;
        cin>>t;
        Init();
        while(t--){
            for( i=0; i<5; i++)
                cin>>str[i];
            memset(g,0,sizeof(g));
            ans=0;
            for(i=0; i<5 ;i++)
                for(j=0; j<5 ;j++){
                    if(str[i][j] == 'x')
                        g[i][j]=1;
                }
            ans=getBig5()*10
            + getLittle5()*5
            + getTongtian()*5
            + get4()*4
                 + get3()*3
                 + xiaodou();
            printf("%d ",ans);
            ans=0;
            memset(g,0,sizeof(g));
            for(i=0; i<5 ;i++)
                for(j=0; j<5 ;j++){
                    if(str[i][j] == 'o')
                        g[i][j]=1;
                }
            ans=getBig5()*10 + getLittle5()*5 + getTongtian()*5 + get4()*4
                 + get3()*3 + xiaodou();
            printf("%d
    ",ans);
        }
         return 0 ;
    }
  • 相关阅读:
    2.pt-table-checksum工具
    Mysql8.0新特性01
    12.redis 之阅读大佬文章随笔
    4.Mysql之Mysqldump命令
    5. 关于高负载服务器Kernel的TCP参数优化
    Mysql Oracle 备份表数据、批量删除表数据
    Mysql limit用法
    Java 字符串数组转字符串
    Layui 自定义年份下拉框并且可输入
    Mysql 生成UUID
  • 原文地址:https://www.cnblogs.com/zn505119020/p/3655403.html
Copyright © 2020-2023  润新知