• 1309 简化版九宫格


    1309 简化版九宫格

    题目描述

    相信大家都玩过“九宫格”这个游戏!下面我就再简述一下规则,在一个9 * 9的网格中填数字19,只要使得19这9个数字在每行和每列出现且仅出现一次即可。现给出一个这样的9 * 9矩阵,判断它是否满足上述规则,并求两条对角线和。

    输入要求

    输入一个9*9数的矩阵。

    输出要求

    输出有两行。第一行:如果输入的矩阵满足所述规则,输出YES;否则输出NO。第二行:两条对角线的和,大的在前面。

    测试数据

    //输入
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    
    //输出
    NO
    45 45
    

    AC代码

    给一个符合九宫格要求的输入,省的你们去找

    //输入
    1 2 3 4 5 6 7 8 9
    8 7 9 1 2 3 4 5 6
    4 5 6 7 8 9 1 2 3
    3 1 2 9 4 5 6 7 8
    6 8 7 3 1 2 9 4 5
    9 4 5 6 7 8 3 1 2
    2 3 1 5 6 4 8 9 7
    7 9 8 2 3 1 5 6 4
    5 6 4 8 9 7 2 3 1
    //输出
    YES
    47 42
    

    注意最后两条对角线和是大的排前面

    #include <bits/stdc++.h>
    using namespace std;
    int a[10005],num[10][10];
    void init()
    {
    	for(int i=1;i<10;i++) a[i]=0;
    }
    bool find()
    {
    	for(int i=1;i<10;i++) 
    	{
    		if(a[i]!=1) return true;
    	}
    	return false;
    }
    int main() {
    	int sum1=0,sum2=0,f=1;
    	for(int i=0;i<9;i++)
    	{
    		for(int j=0;j<9;j++) 
    		{
    			cin>>num[i][j];
    			if(i==j) sum1+=num[i][j];
    			if(i+j==8)  sum2+=num[i][j];
    		}
    	}
    	for(int i=0;i<9;i++)
    	{
    		init();
    		for(int j=0;j<9;j++) 
    		{
    			if(num[i][j]<0) continue;
    			a[num[i][j]]++;
    		}
    		if(find()) f=0;
    	}
    	for(int i=0;i<9;i++)
    	{
    		init();
    		for(int j=0;j<9;j++) 
    		{
    			if(num[j][i]<0) continue;
    			a[num[j][i]]++;
    		}
    		if(find()) f=0;
    	}
    	if(f) cout<<"YES"<<endl;
    	else cout<<"NO"<<endl;
    	if(sum2>sum1) swap(sum1,sum2);
    	cout<<sum1<<" "<<sum2<<endl;
    	return 0;
    }
    
  • 相关阅读:
    (转)使用vsphere client 克隆虚拟机
    【转】VIM高级用法笔记
    Oracle RAC的Failover
    /dev/shm过小导致ORA00845错误解决方法
    (转)How to use udev for Oracle ASM in Oracle Linux 6
    ORACLE十进制与十六进制的转换
    解决Oracle RAC不能自动启动的问题
    RAC集群时间同步服务
    db link hang的解决方法
    【转载】Oracle数据恢复 Linux / Unix 误删除的文件恢复
  • 原文地址:https://www.cnblogs.com/xxhao/p/14320482.html
Copyright © 2020-2023  润新知