• UJNOJ_1307: 数独 [for ACMer]_模拟


    UJNOJ_1307: 数独 [for ACMer]_模拟

    1307: 数独 [for ACMer]

    内存限制:128 MB时间限制:10 S

    评测方式:文本比较命题人:20151222169

    提交:2解决:1

    提交提交记录统计

    题目描述

    数独的具体规则如下: 每一行都用到1,2,3,4,5,6,7,8,9,位置不限, 每一列都用到1,2,3,4,5,6,7,8,9,位置不限, 每3×3的格子(共九个这样的格子)都用到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。

    如下就是一个正确的数独:
    5  8  1  4  9  3  7  6  2
    9  6  3  7  1  2  5  8  4
    2  7  4  8  6  5  9  3  1
    1  2  9  5  4  6  3  7  8
    4  3  6  1  8  7  2  9  5
    7  5  8  3  2  9  1  4  6
    8  9  2  6  7  1  4  5  3
    6  1  5  9  3  4  8  2  7
    3  4  7  2  5  8  6  1  9

    输入

    输入 输入n个数独,你来验证它是否违反规则. 第一行为数独个数,第二行开始为第一个数独,之后为第二个,至第n个. 注意!每个数独之间有一个回车隔开!

    输出

    输出 若正确则输出”Right”若不正确则输出”Wrong” 输出一个换一行

    样例输入 复制

    1. 2
    2. 5 8 1 4 9 3 7 6 2
    3. 9 6 3 7 1 2 5 8 4
    4. 2 7 4 8 6 5 9 3 1
    5. 1 2 9 5 4 6 3 7 8
    6. 4 3 6 1 8 7 2 9 5
    7. 7 5 8 3 2 9 1 4 6
    8. 8 9 2 6 7 1 4 5 3
    9. 6 1 5 9 3 4 8 2 7
    10. 3 4 7 2 5 8 6 1 9
    11. 1 2 3 4 5 6 7 8 9
    12. 2 3 4 5 6 7 8 9 1
    13. 3 4 5 6 7 8 9 1 2
    14. 4 5 6 7 8 9 1 2 3
    15. 5 6 7 8 9 1 2 3 4
    16. 6 7 8 9 1 2 3 4 5
    17. 7 8 9 1 2 3 4 5 6
    18. 8 9 1 2 3 4 5 6 7
    19. 9 1 2 3 4 5 6 7 8

    样例输出 复制

    1. Right
    2. Wrong

    1. // 1307: 数独 [for ACMer]
    2. #include
    3. using namespace std;
    4. const int N=11;
    5. int in[N][N];
    6. bool used[N];
    7. bool is_ok( int a,int b )
    8. {
    9. memset( used,0,sizeof( used ) );
    10. int cnt=0;
    11. for( int i=a;i<=a+2;i++ )
    12. for( int j=b;j<=b+2;j++ )
    13. if( in[i][j]>=1 && in[i][j]<=9 && used[in[i][j]]==0 )
    14. {
    15. cnt++;
    16. used[in[i][j]]=1;
    17. }
    18. else return false;
    19. return ( cnt==9 );
    20. }
    21. int main()
    22. {
    23. int n,i,j,cnt;
    24. bool f;
    25. scanf("%d",&n );
    26. while( n-- )
    27. {
    28. f=0;
    29. for( i=1;i<=9;i++ )
    30. for( j=1;j<=9;j++ )
    31. scanf("%d",&in[i][j] );
    32. for( i=1;i<=9;i++ )
    33. {
    34. memset( used,0,sizeof( used ) );
    35. cnt=0;
    36. for( j=1;j<=9;j++ )
    37. if( in[i][j]>=1 && in[i][j]<=9 && used[in[i][j]]==0 )
    38. {
    39. cnt++;
    40. used[in[i][j]]=1;
    41. }
    42. else break;
    43. if( cnt!=9 ) { f=1; goto out; }
    44. }
    45. for( j=1;j<=9;j++ )
    46. {
    47. memset( used,0,sizeof( used ) );
    48. cnt=0;
    49. for( i=1;i<=9;i++ )
    50. if( in[i][j]>=1 && in[i][j]<=9 && used[in[i][j]]==0 )
    51. {
    52. cnt++;
    53. used[in[i][j]]=1;
    54. }
    55. else break;
    56. if( cnt!=9 ) { f=1; goto out; }
    57. }
    58. for( i=1;i<=9;i+=3 )
    59. for( j=1;j<=9;j+=3 )
    60. if( is_ok( i,j )==0 ) { f=1; goto out; }
    61. out:
    62. printf( f ? "Wrong\n" : "Right\n" );
    63. }
    64. return 0;
    65. }
    66. // sum==45 用和判断不准确

  • 相关阅读:
    Spring IOC容器与 Bean 管理 第4关:根据 Bean 的生命周期修改属性值
    React的Render的简单实现
    C++ 入门
    【无标题】
    c语言练习89:链表的使用
    Html 标题标签h1-h6详解和细节分析
    npm 换源
    Redux源码分析之createStore
    Tomcat和Servlet
    Spring 源码学习笔记10——Spring AOP
  • 原文地址:https://blog.csdn.net/qq_63173957/article/details/127814012