iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言只能实现解数独程序
  • 327
分享到

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

2023-06-08 08:06:12 327人浏览 泡泡鱼
摘要

这篇文章主要介绍“C语言只能实现解数独程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言只能实现解数独程序”文章能帮助大家解决问题。用C语言写的解数独的程序。在linux下测试成功运行。效果如

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

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

效果如图:

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

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

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

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

程序源码如下:

#include <stdio.h>#include <stdlib.h> #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<SIZE; i++) { if(i%3==0)  {  for(j=0; j<SIZE*2+4; j++)  putchar('-');  putchar('\n'); }   for(j=0; j<SIZE; j++) {  if(j%3==0)  putchar('|');  if(board[i][j].num > 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<SIZE*2+4; i++) putchar('-'); putchar('\n');} void sub(int i, int j, int bit){ int k, m;   for(k=0; k<SIZE; k++) { board[k][j].left &= ~bit; board[i][k].left &= ~bit; }   for(k=i/3*3; k<(i/3+1)*3; k++) for(m=j/3*3; m<(j/3+1)*3; m++)  board[k][m].left &= ~bit; } void init(){ int i, j;   for(i=0; i<SIZE; i++) for(j=0; j<SIZE; j++)  if(board[i][j].num > 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<SIZE; k++) { board[k][j].left |= bit; board[i][k].left |= bit; } for(k=i/3*3; k<(i/3+1)*3; k++) for(m=j/3*3; m<(j/3+1)*3; m++)  board[k][m].left |= bit;} void solve(int pos){ int i=pos/SIZE;  int j=pos%SIZE;  int bit, left;  if(pos == SIZE*SIZE) { printf_res(); exit(0);  } if(board[i][j].num > 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<SIZE; i++) for(j=0; j<SIZE; j++) {  while((c=getchar())<'0' || c>'9')  ;  board[i][j].num = c-'0';  board[i][j].try = 0;  board[i][j].left = 0x0001FF;  }   init(); solve(0);  return 0;}

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

--结束END--

本文标题: C语言只能实现解数独程序

本文链接: https://www.lsjlt.com/news/252943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言只能实现解数独程序
    这篇文章主要介绍“C语言只能实现解数独程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言只能实现解数独程序”文章能帮助大家解决问题。用C语言写的解数独的程序。在linux下测试成功运行。效果如...
    99+
    2023-06-08
  • C语言如何实现数独程序
    这篇文章主要介绍“C语言如何实现数独程序”,在日常操作中,相信很多人在C语言如何实现数独程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言如何实现数独程序”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-05
  • C语言实现数独程序的示例代码
    目录程序截图简单说明代码实现程序截图 简单说明 随机生成数独的算法见力扣上对应题目的题解,我用的是递归回溯法 力扣原题 先随机放入 11 个数就能生成一个数独然后求数独的解最后...
    99+
    2023-03-03
    C语言实现数独游戏 C语言数独程序 C语言数独
  • C语言实现数独游戏
    本文实例为大家分享了C语言实现数独游戏的具体代码,供大家参考,具体内容如下 目标 写一个数独游戏,有以下功能: 1:能随机产生题目并给出答案。 2:求解输入的题目并输出答案。 实现说...
    99+
    2024-04-02
  • C语言实现数独小游戏
    本文实例为大家分享了C语言实现数独小游戏的具体代码,供大家参考,具体内容如下 输入包含9x9的已知数字,空位用0补齐,中间用空格隔开。(输入数独题目确保正确)输出为输入数独题目的解。...
    99+
    2024-04-02
  • C语言怎么实现数独游戏
    本文小编为大家详细介绍“C语言怎么实现数独游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么实现数独游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。目标写一个数独游戏,有以下功能:能随机产生题目并给...
    99+
    2023-06-29
  • C语言实现数独辅助器(附源码)
    目录数独游戏介绍数独辅助器编写思路效果图源码数独游戏介绍 数独是源自瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据 9×9 盘面上的已知数字,推理出...
    99+
    2023-01-11
    C语言实现数独辅助器 C语言数独辅助器 C语言数独
  • C#实现数独解法
    数独简介 数独(shù dú)是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出...
    99+
    2024-04-02
  • 用c语言编程实现素数判断(判断素数的c语言程序函数)
    以下是一个用C语言编写的判断素数的函数:```c#include #include bool isPrime(int n) {if ...
    99+
    2023-09-22
    c语言
  • C语言进程程序替换的实现详解
    目录进程程序替换替换原理替换函数替换函数名称助记进程程序替换 替换原理 使用fork创建子进程后执行的是和父进程相同的程序,但是那样并没有多大的意义,子进程往往会“程序替...
    99+
    2024-04-02
  • C语言实现通讯录程序
    本文实例为大家分享了C语言实现通讯录程序的具体代码,供大家参考,具体内容如下 设计要求: 可以存放1000个人的信息,每个人的信息包括姓名、年龄、性别、电话、住址 通讯录功能包括: ...
    99+
    2024-04-02
  • C语言实现扫雷小程序
    前言 《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 多文件形式 在实现游戏...
    99+
    2024-04-02
  • C语言qsort函数用冒泡排序实现过程详解
    目录前言1.冒泡排序的实现1.1冒泡排序的概念1.2具体代码的实现2.qsort函数3.qsort函数的实现前言 这篇文章就是指针进阶的收尾环节了,相信看过C语言进阶—&...
    99+
    2023-02-14
    C语言qsort函数 C语言冒泡排序实现qsort函数
  • C语言实现简易扫雷程序
    前言 前面写了三子棋的小游戏,感觉不过瘾,今天再来一个扫雷的小游戏。欢迎评论探讨 思路分析 游戏简介 说到扫雷很容易想起很多个方形格子,表面什么也没有,点击其中一个小格子,如果时炸弹...
    99+
    2024-04-02
  • C语言实现自动发牌程序
    目录题目描述问题分析代码实现运行结果网上参考题目描述 一副扑克有52张牌,打桥牌时应将牌分给4个人。请设计一个程序完成自动发牌的工作。要求:黑桃用S (Spaces)表示,红桃用H ...
    99+
    2024-04-02
  • 用C语言实现扫雷小程序
    本文实例为大家分享了C语言实现扫雷小程序的具体代码,供大家参考,具体内容如下 扫雷程序的编写需要有清晰的思路,所以我们先要清楚扫雷的实现有几个功能模块让我们编写,再用主函数将功能结合...
    99+
    2024-04-02
  • C语言实现整数逆序的情况解析
    逆序分两种情况。举个例子,情况① 输入1600,输出0061;情况② 输入1600,输出61. 情况① //情况① #include<stdio.h> void ma...
    99+
    2024-04-02
  • C语言实现随机抽奖程序
    本文实例为大家分享了C语言实现抽奖小程序的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #...
    99+
    2024-04-02
  • C语言详解冒泡排序实现
    目录前言一、冒泡排序是什么二、具体步骤1.代码解释2.读入数据总结前言 在排序中,有各种各样的排序方式,今天我们将要来介绍《冒泡排序》。今天会从冒泡排序的具体意义和他的操作来展开。 ...
    99+
    2024-04-02
  • C++实现LeetCode(37.求解数独)
    [LeetCode] 37. Sudoku Solver 求解数独 Write a program to solve a Sudoku puzzle by filling the e...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作