1 条题解

  • 0
    @ 2025-8-24 22:52:53

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar include13_fAKe
    一路坎坷而来,或将随风而去。

    搬运于2025-08-24 22:52:53,当前版本为作者最后更新于2023-12-08 22:38:24,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题意

    给定一个九宫标准数独游戏盘。里面有一些格子填了数,还有一些格子没有填数。

    表示这个游戏盘要用三大类字符:

    • +-:数独游戏盘的边框包括九宫格的边框)。
    • 191\sim9 的数字:已填好的数字。
    • .:准备要填的数。

    定义出现矛盾如下:在同一行(列、九宫格)中有重复的数字。

    询问在已填好的数中,是否已出现了矛盾。(不把 . 填完)。

    思路

    直接暴力统计在同一行(列、九宫格)中是否出现了矛盾。

    可以用 sumsum 数组记录在这一行(列、九宫格)中 191\sim9 每一个数字出现的次数。

    定义 sumisum_i 为数字 ii 的出现次数,每搜到一个数字 ii,就让 sumisum_i 的值加 11

    sumi>1sum_i>1,说明已经出现了矛盾,可以马上输出 GRESKA并结束程序

    但一定要在搜完一行(列、九宫格)的时候清空 sumsum 数组。

    最后,如果游戏盘没有问题,要记得输出 OK 再结束。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    char s[15][15];
    int sum[15];
    int main(){
    	for(int i=1;i<=13;i++){
    		for(int j=1;j<=13;j++){
    			cin>>s[i][j];
    		}
    	}
    	for(int i=1;i<=13;i++){
    		if(i%4==1)	continue;
    		memset(sum,0,sizeof(sum));
    		for(int j=1;j<=13;j++){
    			if(s[i][j]>='0'&&s[i][j]<='9'){
    				sum[s[i][j]-'0']++;
    				if(sum[s[i][j]-'0']>1){
    					puts("GRESKA");
    					return 0;
    				}
    			}
    		}
    	}
    	for(int i=1;i<=13;i++){
    		if(i%4==1)	continue;
    		memset(sum,0,sizeof(sum));
    		for(int j=1;j<=13;j++){
    			if(s[j][i]>='0'&&s[j][i]<='9'){
    				sum[s[j][i]-'0']++;
    				if(sum[s[j][i]-'0']>1){
    					puts("GRESKA");
    					return 0;
    				}
    			}
    		}
    	}
    	for(int i=1;i<=13;i++){
    		if(i%4!=2)	continue;
    		for(int j=1;j<=13;j++){
    			if(j%4!=2)	continue;
    			memset(sum,0,sizeof(sum));
    			for(int i1=0;i1<=2;i1++){
    				for(int j1=0;j1<=2;j1++){
    					if(s[i+i1][j+j1]>='0'&&s[i+i1][j+j1]<='9'){
    						sum[s[i+i1][j+j1]-'0']++;
    						if(sum[s[i+i1][j+j1]-'0']>1){
    							puts("GRESKA");
    							return 0;
    						}
    					}
    				}
    			}
    		}
    	}
    	puts("OK");
    	return 0;
    } 
    
    • 1

    信息

    ID
    9430
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者