⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数独.c

📁 数独的实现过程
💻 C
字号:
#include<stdio.h>

int jump_S(int *r[], int m, int n)
{
  int i,j,k[2], t=0;
  k[1]=m%3; k[0]=n%3;
  if(k[1]==0)
    if(k[0]==0)
    {
     for(i=m;i<m+3;i++)
      for(j=n;j<n+3;j++)
       if(r[i][j]==r[m][n])t++;

    }
  if(k[1]==0)
    if(k[0]==1)
    {
     for(i=m;i<m+3;i++)
      for(j=n-1;j<n+2;j++)
       if(r[i][j]==r[m][n])t++;

    }
  if(k[1]==0)
    if(k[0]==2)
    {
     for(i=m;i<m+3;i++)
      for(j=n-2;j<n+1;j++)
       if(r[i][j]==r[m][n])t++;

    }

  if(k[1]==1)
    if(k[0]==0)
    {
     for(i=m-1;i<m+2;i++)
      for(j=n;j<n+3;j++)
       if(r[i][j]==r[m][n])t++;

    }
  if(k[1]==1)
    if(k[0]==1)
    {
     for(i=m-1;i<m+2;i++)
      for(j=n-1;j<n+2;j++)
       if(r[i][j]==r[m][n])t++;

    }
  if(k[1]==1)
    if(k[0]==2)
    {
     for(i=m-1;i<m+2;i++)
      for(j=n-2;j<n+1;j++)
       if(r[i][j]==r[m][n])t++;

    }
  if(k[1]==2)
    if(k[0]==0)
    {
     for(i=m-2;i<m+1;i++)
      for(j=n;j<n+3;j++)
       if(r[i][j]==r[m][n])t++;

    }
  if(k[1]==2)
    if(k[0]==1)
    {
     for(i=m-2;i<m+1;i++)
      for(j=n-1;j<n+2;j++)
       if(r[i][j]==r[m][n])t++;

    }
  if(k[1]==2)
    if(k[0]==2)
    {
     for(i=m-2;i<m+1;i++)
      for(j=n-2;j<n+1;j++)
       if(r[i][j]==r[m][n])t++;

    }

  return t;


}


int jump_V(int *q[], int i, int j)
{
 int t=0,k;
 for(k=0;k<9;k++)
  if(q[k][j]==q[i][j]) t++;
 if(t==1) t=jump_S(q,i,j);

  return t;
}

int jump_L(int *p[], int m, int n)
{
  int t=0,j;
  for(j=0;j<9;j++)
   if(p[m][j]==p[m][n])t++;
  if(t==1) t=jump_V(p,m,n);

  return t;

}


void main()
{
 int a[9][9], *b[9], i,j,m,n,t=0,k=0,q=0;
 for(i=0;i<9;i++) b[i]=a[i];

 for(i=0;i<9;i++)
   for(j=0;j<9;j++) b[i][j]=0;


 for(i=0;i<9;i++)
  for(j=0;j<9;)
   {
      q=j;
      t=0;
      while(1)
      {scanf("%d", &a[i][j]);

       if(a[i][j]<=9)
        if(a[i][j]>=1)
         {t=jump_L(b,i,j); /*judge the number*/
        /* printf("%d", t);
         */
          break;}
        }
      if(t==1)    /*print the last result*/
       {
         printf("Last result\n");
        for(m=0;m<9;m++)
         for(n=0;n<9;n++)
         {
          if((n%9)==0)printf("\n");
          printf("%d\t", a[m][n]);


          }
        }
      else {
            j--;
            k++;
            if(k==9){
                     printf("Game over and have another try~");
                     break;
                     }
             printf("change another number:");
             }
   j++;

   if(q!=j) k=0;
   }
  if(i==9)         /*succeed*/
   if(j==9){
             printf("\n");
             printf("Congratulation! more chanllenge waiting for you!");
            }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -