1. 程式人生 > >C 一個完成數獨的小程式

C 一個完成數獨的小程式


#include<stdio.h>
int question[9][9];
int check (int count)
{
	int row=count/9;
	int col=count%9;
    int row2=row/3*3;
    int col2=col/3*3;	
	int i,j,m,n;
	for(i=0;i<9;i++)
	    if(question[row][col]==question[row][i]&&col!=i) return 0;
	for(j=0;j<9;j++)
	    if(question[row][col]==question[j][col]&&row!=j) return 0;
	for(m=row2;m<row2+3;m++)	
	{
		for(n=col2;n<col2+3;n++)
			if(question[row][col]==question[m][n]&&row!=m&&col!=m) return 0;		
	} 
	return 1;
}
void output(int count)
{
	int i,j,x;
	int q,p;
	int row=count/9;
	int col=count%9;
	if(count==81)
	{
		printf("答案:\n");	
	    for(q=0;q<9;q++)
	    {
	    	for(p=0;p<9;p++)
		        printf("%d ",question[q][p]);
		    printf("\n");
	    }
		return ;		
	}
	if(question[row][col]==0)
	{
	    for(i=1;i<10;i++)
	    {
		    question[row][col]=i;
		    if(check(count)==1) output(count+1);
		    question[row][col]=0;
	    }		
	}
    else output(count+1);		
}
int main()
{
	int i,j,count=0;
	printf("請輸入題目,未知處用0代替\n");
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		    scanf("%d",&question[i][j]);
	}
	output(count);
}

每確定一個數字檢驗一次

重點在於對遞迴的使用(自己腦內想象一下覺得頭都要炸了)

相關推薦

C 一個成數程式

 #include<stdio.h> int question[9][9]; int check (int count) { int row=count/9; int col=co

20150616 一個測試注意力的程式

首先新增一個類: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System

一個隨機生成數程式

以下是一個生成數獨的程式,利用深度優先遍歷的方式。每次生成的數獨是隨機的。 對於判斷一個點是否正確擺放的函式IsRightPlace(),要注意幾個關鍵點。//mySIZE是數獨棋盤的邊長,棋盤是mySIZE*mySIZE的大小 int mySIZE = 9; void

一週擼一個 GitHub 微信程式

掃碼體驗 宣告 眾所周知,GitHub 自己並沒有官方 App,更別說微信小程式了。本程式完全為第三方開發者開發,僅用於學習交流,禁止用於其他用途。若要使用正版,請使用 GitHub 網頁端。 該小程式所有 API 均來自 GitHub 官方提供的開發者 API 第三版,詳情請戳

一個Python編寫的程式(學生資訊管理系統)

def printInfo(StudentData,StudentName): """ :param StudentData: :param StudentName: :return: """ student = StudentData[Stude

編寫一個個人微信程式(安裝,建立,編寫,執行)

一、微信小程式  微信公眾平臺    https://mp.weixin.qq.com/cgi-bin/wx 二、下載開發工具  https://developers.weixin.qq.com/miniprogram/dev/de

《覺得重要程式》這是一個交換數字的程式

// 用指標互換兩個數字的程式 //2018年12月10日 #include<stdio.h>void exchange (int *p, int *q);int main (void){ int a=1,b=2; exchange(&a,&b); printf("a=%d, b=

閒來無事,用Python寫了一個pm2.5查詢程式,還是很有趣的

    今天教大家用python完成首個MVP,如何用CLI(command-line interface,命令列介面)來執行第一個空氣質量查詢程式。 更多Python視訊、原始碼、資料加群960410445免費獲取   知識點

微信程式-從零開始製作一個跑步微信程式

一、準備工作 1、註冊一個小程式賬號,得用一個沒註冊過公眾號的郵箱註冊。 2、註冊過程中需要很多認證,有很多認證,比較繁瑣,如果暫時只是開發測試,不進行提審、釋出的話,只要完成營業執照號填寫就可以了,不需要完成微信認證。 3、註冊完賬號,登入,在主頁面左邊列表中點選設定,然後再

入手mpvue之一:快速搭建一個mpvue結構並新建一個元件後,程式報錯未正確呼叫page 或page[]未發現元件

背景:  公司專案重構,要把之前用wepy做的小程式重新用mpvue來做,短期來說又是一次陣痛,又需要一個過渡期來適應新的框架,但長期來說還是值得的,因為以後要做多端適配的時候可以只用一套程式碼,微調下就行了,相對來說成本更低。實戰:快速構建專案:# 1. 先檢查下 Node

C語言10個經典程式——白必備!

網上有很多的人說程式設計有多麼多麼無聊。。。。So Boring ! 。。。其實小編想說:不要管別人怎麼說,別人說什麼,做你自己喜歡做的事就好。堅持下來,你會發現程式設計的樂趣的。。。。當然,如果你覺得學習程式語言很痛苦,堅持了一段時間後無果,南無果斷放棄未必不是一個好的選擇。。。。哈哈哈哈。。。

C語言實現進度條程式 全知識點!

知識點: “%-100s” : '100’表示輸出的資料佔位100不足的空格彌補; '-'表示資料左對齊; “%”的列印注意需要轉義; fflush(stdout):對標準輸出流的清理,但是它並不是把資料丟掉,而是及時地列印資料到螢幕上。標準輸出是以每行為單位進行

【菜鳥程式一個判斷素數的程式

本人是個礦業方面的研究生,本著導師不管我,隨便練練手的心態看看C++方面的程式設計什麼的。程式碼一般都不怎麼成熟。純屬寫著玩。 素數判斷程式: 輸入以空格分隔,以0結束輸入。 若為素數,則輸出。1不是素數。 如下: #include<iostre

C++】 甲魚視訊筆記(一) 從CC++過渡的幾個程式

例1:陣列元素的求和 C示例 int main() { int data[]={0,1,2,3,5,6,7,8,9}; int size=sizeof(data)/sizeof(data[0]); printf(“data:%d\n”,sizeof

使用Muduo成數和八數碼問題求解伺服器

在剖析完Muduo網路庫原始碼之後,我們試著完成一個高效的數獨和八數碼問題求解伺服器。 先說說為什麼要選擇這兩個問題?數獨問題一直是陳碩老師很喜歡的問題,在muduo網路庫中多次提到並有示例。八數碼問題是我很喜歡的問題,所以在此綜合完成求解數獨和八數碼問題的高效服務端程式。

ECShop 商城程式「weeshop 」- 基於 ECShop 3.6 版本開發的整版商城程式

weeshopECShop 微信小程式商城,基於3.6版本 appserver 介面,100% 相容原有程式。注意:本專案開發基本完善,如用於商業用途,請務必去往部落格文章留言備註。 專案內容基於 ECShop 3.6 的 API 介面,如需二次開發,請參考 appserve

我做的一個時間管理的程式

最近做了一個小程式,主要功能是幫助使用者進行時間管理。例如,可以記錄每天的工作情況,哪個時間段做了什麼事情。類似一個日誌系統。我自己使用了一段時間,發現確實有些作用,促使我關注自己每天都把時間花在什麼地

linux下qt的安裝和一個最簡單的程式hello world

唉。。十一買車票真的有點鬱悶啊!網上買票還得排隊,去哪說理去!我是邊買車票,變自學QT,第一次用QT 環境,有點不太熟悉,配置配置linux下的QT開發環境,自己研究了一天,終於讓我弄好啦,老天不負有

一些內建方法的使用,一個驚豔的程式,內建方法的一些使用

import jsonfrom collections import namedtuple # 命名元祖Card = namedtuple('Card','rank suit')c1 = Card(2,'紅心')class FranchDeck: ranks = [str(rank) for ran

實現一個隨機點名的程式 ,並且將方法功能獨立出來,減少冗餘

import java.util.Scanner; import java.util.Random; /* 實現隨機點名器 1. 儲存所有學生姓名 2. 預覽所有學生姓名,遍歷陣列 3. 隨機數作為索引,到陣列中找元素 將功能獨立出來, 作成方法,呼叫方法即可