千家信息网

C语言只能实现解数独程序

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍"C语言只能实现解数独程序"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C语言只能实现解数独程序"文章能帮助大家解决问题。用C语言写的解数独的
千家信息网最后更新 2025年01月31日C语言只能实现解数独程序

这篇文章主要介绍"C语言只能实现解数独程序"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C语言只能实现解数独程序"文章能帮助大家解决问题。

用C语言写的解数独的程序。在linux下测试成功运行。

效果如图:

这是带解的数独,需要填写的部分用数字0代替。

这是程序运行后的效果图。看看,数独已经搞定啦。

程序源码如下:

#include #include  #define SIZE 9#define get_low_bit(x) ((~x&(x-1))+1) struct{ int left; char num;  char try;}board[SIZE][SIZE]; int bit2num(int bit){ switch(bit){ case 1:case 2:  return bit;  case 4:  return 3; case 8:  return 4; case 16:  return 5; case 32:  return 6;  case 64:   return 7;  case 128:  return 8;  case 256:  return 9; } } void printf_res(){ int i, j, k;   for(i=0; i 0)  printf("\033[0;31m%2d\033[0m", board[i][j].num);  else  printf("%2d", board[i][j].try); }  printf("|\n"); } for(i=0; i 0)  sub(i, j, 1<<(board[i][j].num-1));  else if(board[i][j].try > 0)  sub(i, j, 1<<(board[i][j].try-1));} void add(int i, int j, int bit){ int k, m;  for(k=0; k 0) solve(pos+1);  else for(left=board[i][j].left; left; left&=(left-1)) {  bit = get_low_bit(left);  sub(i, j, bit);  board[i][j].try = bit2num(bit);   solve(pos+1);    add(i, j, bit);  board[i][j].try=0;  init();  } } int main(){ int i, j, c;  for(i=0; i'9')  ;  board[i][j].num = c-'0';  board[i][j].try = 0;  board[i][j].left = 0x0001FF;  }   init(); solve(0);  return 0;}

关于"C语言只能实现解数独程序"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

0