【原创】数独C语言全解 您所在的位置:网站首页 数独数独规则 【原创】数独C语言全解

【原创】数独C语言全解

2023-06-07 02:56| 来源: 网络整理| 查看: 265

 

1、初始输入部分

关于初始输入部分,为了简便输入,结合数独的特点,采用3位数连续输入的方式来初始输入,比如,输入123表示第1行第2列的初始值为3,输入798表示第7行第9列的初始值为8。如果输入错误了,要进行清除,则采用初始值置0的方式来处理。

同时对错误的输入进行简单甄别(完全的甄别错误输入,是一个比较麻烦的事情,不做完整处理)。

代码如下:

//初始输入  

   bool blinitfail=true;     //输入初始值      do{         int x=0,y=0,i=0,j=0,k=0;    printf("初始值输入说明:\n输入三位数,分别表示行数、列数,初始值,最后回车结束:\n");     printf("如输入'123',表示第1行第2列的初始数值为3\n");     printf("如需删除已设置初始值,可将该处设置为0值。如'130'表示将第1行第3列初始值删除\n");     printf("如果输入初始值结束,请输入(100)\n");     while(1){                 scanf("%d",&j);                  if(j==100){             printf("初始值输入结束!以下列出已设置内容\n\n");             prtsdk(sdk);             printf("是否需要更改,如需更改,请输入0,其他字符则自动验证数独,无误后开始解题\n");             scanf("%d",&k);             if(k!=0)break;else {                 printf("现在可以继续录入初始值\n要删除初始值可设置该处为0\n");                 continue;             }         }         x=j/100;         y=(j%100)/10;         i=j%10;         if((x0)&&(y0)&&(i=0)){             sdk[x-1][y-1]=i;             if(i==0)printf("已经清除(%d,%d)处的初始值\n",x,y);             else printf("已设置(%d,%d)=%d\n\n",x,y,sdk[x-1][y-1]);             }else{             printf("\n数据不符合要求,本次未设置初始值。\n");         }         printf("继续输入初始值或结束(输入100)\n");     }          //验证初始值是否满足要求     bool blt=false;     blt=chkinit(0,sdk);     if(blt==true){         blinitfail=true;         printf("初始数独有误,重置全部为0\n\n");         for(i=0;i                 sdk[i][j]=0;             }         }                  printf("请重新输入初始数据\n");     }else{         printf("初始值验证通过,需解题数独为\n");         prtsdk(sdk);         blinitfail=false;     }     //prtsdk(sdk);     blt=false;//恢复blt 

    }while(blinitfail);     //初始值输入结束



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有