当前位置: 首页 > article >正文

【天梯赛】L1-104 九宫格(C++)

易忽略的错误:开始习惯性地看到n就以为是n*n数组了,实际上应该是9*9的固定大小数组,查了半天没查出来

题面

L1-104 九宫格 - 团体程序设计天梯赛-练习集

代码实现 

#include<bits/stdc++.h>
using namespace std;
//易错:开始习惯性地看到n就以为是n*n数组了
int main()
{
	int direct[8][2] = {
  
  {-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
    int n; cin>>n;
    vector<vector<int>>graph(9, vector<int>(9));//开始习惯性地看到n就以为是n*n数组了
    vector<int>res;
    int flag = 1;
    set<int>st;
    //全部放在一个大for中就好了
    for(int m=0; m<n; m++)
    {
    	//接收和检验每行
        for(int i=0; i<9; i++)
        {
            for(int j=0; j<9; j++)
            {
                cin>>graph[i][j];
                if(graph[i][j]<1 || graph[i][j]>9) flag = 0;//数字均为1~9
                st.insert(graph[i][j]);            
            }
            if(st.size() != 9) flag = 0;//每行的检验
			st.clear();
        }
        //每列
        for(int j=0; j<9 && flag != 0; j++)
        {
            for(int i=0; i<9; i++)
            {
                st.insert(graph[i][j]);
                
            }
            if(st.size()!=9)
            {
                flag = 0; break;
            }     
        }
        //每宫格
        for(int i=1; i<9 && flag != 0; i+=3)
        {
            for(int j=1; j<9 && flag != 0; j+=3)//每宫格的中心点
            {
                st.clear();
                st.insert(graph[i][j]);
                for(int k=0; k<8; k++)
                {
                    st.insert(graph[i+direct[k][0]][j+direct[k][1]]);
                }
                if(st.size()!=9)
                {
                    flag = 0; break;
                }            
            }
        }
        st.clear();
        res.push_back(flag);
        flag = 1;
    }
    for(int i=0; i<res.size(); i++)
    {
        cout<<res[i];
        if(i!=res.size()-1) cout<<endl;
    }
    return 0;    
}

http://www.kler.cn/a/541732.html

相关文章:

  • 不小心删除服务[null]后,git bash出现错误
  • 嵌入式硬件篇---原码、补码、反码
  • 30~32.ppt
  • MYSQL学习笔记(七):新年第一篇之子查询
  • 【多模态大模型】系列3:语义分割(LSeg、GroupViT)
  • 手写一个C++ Android Binder服务及源码分析
  • 10苍穹外卖之Task、WebSocket(音频是前端实现)
  • 【练习】图论
  • 实验8 配置标准访问控制列表IPv4 ACL
  • 易语言文件分析工具
  • 检测网络安全漏洞 工具 网络安全 漏洞扫描 实验
  • 预训练语言模型:从BERT到GPT,NLP的新纪元
  • flask如何进行测试
  • Anaconda Navigator 与 Conda:GUI 和 CLI 的对比与使用
  • 【Python】Anaconda安装
  • 《DeepSeek+Langchain落地实操:RAG知识增强检索和智能体实战开发》
  • redis之事件
  • Qlabel 每五个一换行 并、号分割
  • 超详细的数据结构3(初阶C语言版)栈和队列。
  • ping的网络协议,ping用到的网络协议!
  • Oracle ORA-00054
  • Python自动化办公之Excel拆分
  • Mybatisl面试问答
  • 微信小程序(第一集)
  • MYSQL——安装
  • Qt文本处理【正则表达式】示例详解:【QRegularExpression】