C语言编写一个3*3数独,保证每行每列的和都相等!!求求各位大神了 如何C语言编写数独游戏

c\u8bed\u8a00\u5b9e\u73b0\uff0c9*9\u7684\u65b9\u9635\uff0c\u6bcf\u884c\u548c\u6bcf\u5217\u586b\u51651-9\uff0c\u5e76\u4f7f\u884c\u548c\u5217\u4e2d\u7684\u6570\u5404\u4e0d\u76f8\u540c (\u7c7b\u4f3c\u6570\u72ec\uff0c\u4f46\u6ca1\u6709\u6bcf3*

\u5bf9\u89d2\u7ebf\u7b97\u4e0d\u7b97\uff1f

\u4e0d\u7b97\u7684\u8bdd\u5f88\u597d\u5f04\u7684\u3002
#include int main(void){int i, j;for (i = 0; i < 9; i++) {for (j = 0; j < 9; j++)printf("%d ", (i + j) % 9 + 1);printf("\n");}return 0;}

\u5f53\u5e74\u6211\u4eec\u505a\u5927\u7a0b\u7684\u65f6\u5019\u672c\u6765\u4e5f\u60f3\u505a\u6570\u72ec\u6765\u7740,\u540e\u6765\u65f6\u95f4\u4e0d\u591f\u6ca1\u505a\u6210.\u4e0d\u77e5\u9053\u4e13\u4e1a\u4eba\u58eb\u600e\u4e48\u7f16\u7684,\u53ea\u80fd\u63d0\u4f9b\u4e00\u70b9\u5f53\u65f6\u7684\u601d\u8def\u7ed9\u4f60,
1.9*9\u4e2a\u683c\u5b50\u5bf9\u5e94\u4e00\u4e2a\u6570\u7ec4A,\u6570\u7ec4\u7684\u7b2c\u4e00\u4e2a\u503c\u4ece0\u52309\u8868\u793a\u5176\u4e2d\u586b\u7684\u6570\u5b57,0\u5c31\u662f\u4e0d\u586b,\u53e6\u4e00\u4e2a\u503c\u8868\u793a\u5b83\u5728\u684c\u9762\u4e0a\u7684\u4f4d\u7f6e\u5c31\u662f\u5750\u6807
2.\u9700\u898110\u5f20\u56fe\u7247,\u7a7a\u767d\u548c9\u4e2a\u6570\u5b57
3.\u901a\u8fc7\u5bf9\u9f20\u6807\u70b9\u51fb\u7684\u53cd\u5e94\u6539\u53d8\u683c\u5b50\u6570\u7ec4A\u7684\u503c,\u4e14\u5c06\u76f8\u5e94\u56fe\u7247\u8986\u76d6\u5728\u76f8\u5e94\u5750\u6807\u4e0a
4.\u4e8b\u5148\u8f93\u5165\u82e5\u5e72\u7ec4\u6570\u7ec4A\u7684\u503c(\u6bcf\u7ec481\u4e2a\u6570),\u4f5c\u4e3a\u9898\u5e93
5.\u8fdb\u884c\u6e38\u620f\u65f6\u968f\u673a\u62bd\u53d6\u9898\u5e93\u4e2d\u7684\u4e00\u7ec4,\u518d\u968f\u673a\u62bd\u53d6\u82e5\u5e72\u683c\u5b50\u663e\u793a\u51fa\u6765,\u5176\u4ed6\u7559\u767d.
6.\u586b\u5b8c\u540e\u7528\u4e09\u4e2a\u5faa\u73af\u5224\u65ad\u4e0b\u6bcf\u884c\u6bcf\u5217\u6bcf\u5757\u662f\u5426\u6709\u76f8\u540c\u7684\u6570\u5b57,\u6ca1\u6709\u5219\u901a\u8fc7.
\u5177\u4f53\u7f16\u6309\u94ae\u3001\u653e\u56fe\u3001\u9f20\u6807\u70b9\u51fb\u54cd\u5e94\u7b49\u5404\u79cd\u95ee\u9898\u67e5\u4e00\u4e0b\u4e66\uff0c\u6709\u5f88\u591a\u4e66\u4e0a\u6709\u5f88\u591a\u6559\u7684\u8fd9\u79cd\u4e00\u5c0f\u6bb5\u4e00\u5c0f\u6bb5\u7684\u7a0b\u5e8f\u6e90\u4ee3\u7801\uff0c\u76f4\u63a5\u6284\u4e0b\u5c31\u884c\u4e86\u3002
\u52a0\u6cb9^^

/*
因为你说是数独 可是你只表述了行列相等,如果是数独应该对角线相加也相等,所以我写了两个判断函数,judge1为对角线也相等的情况,judge为你描述的行列和相等(情况太多了)
结题方案只需要做一次dfs就可以了,还需要配合一个栈来存储dfs的路径,将每个符合条件的路径做一次行列和是否相等的判断 然后输出就是要的结果!
*/
#include<stdio.h>
#include<memory.h>
#include<stdbool.h>
//stack
int a[9]={0};//a[0]--a[0][0] a[1]--a[0][1] and so on  simulate stack
int len=0;
//dfs
int visited[10]={0};
bool judge()//行列相等
{
    int i,j;
    int tmp[6]={0};
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            tmp[i]+=a[3*i+j];
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            tmp[3+i]+=a[i+3*j];
    int jud=tmp[0];
    for(i=1;i<6;i++)
    {
        if(jud!=tmp[i])
            return false;
    }
    return true;
}
bool judge1()//行列相等 对角线也相等
{
    int i,j;
    int tmp[8]={0};
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            tmp[i]+=a[3*i+j];
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            tmp[3+i]+=a[i+3*j];
    tmp[7]=a[0]+a[4]+a[8];
    tmp[6]=a[2]+a[4]+a[6];
    int jud=tmp[0];
    for(i=1;i<8;i++)
    {
        if(jud!=tmp[i])
            return false;
    }
    return true;
}
void printa()
{
    int t,p;
    for(t=0;t<3;t++)
    {
        for(p=0;p<3;p++)
        {
            printf("%d ",a[3*t+p]);
        }
        printf("
");
    }
}
void dfs(int i,int v[])
{
    if(i==10)//find one solution
    {
        if(judge1())//给你写了两个判断函数 如果对角线也相等那么用judge1()即可判断
            printa();
        return;
    }

    int j;
    for(j=1;j<=9;j++)
    {
        int tmp[10];
        memcpy(tmp,v,10*sizeof(int));
        if(tmp[j]==0)
        {
            tmp[j]=1;
            a[len++]=j;
            //printf("%d %d
",len-1,a[len-1]);
            dfs(i+1,tmp);
            len--;
        }

    }


}
int main(void)
{
    dfs(1,visited);
    return 0;
}


//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int main(void){
    char s[3][3]={0},i,j,x;
    for(i=2,j=x=1;x<10;x++,i++,j++){
        if(i==3 && j<3)i-=3;
        else if(j==3 && i<3)j-=3;
        else if(i==3 && j==3 || s[i][j]!=0){
            i-=2;
            j-=1;
        }
        s[i][j]=x;
    }
    for(i=0;i<3;i++){
        for(j=0;j<3;j++)
            printf("%3d",s[i][j]);
        printf("
");
    }
    return 0;
}


  • 姹C璇█鏁扮嫭娓告垙杈呭姪浠g爜
    绛旓細//瀵鏁扮嫭鍒濆鍖 for(i=0;i<9;i++)for(j=0;j<9;j++)for(k=0;k<10;k++)a[i][j][k]=k;//寮濮嬭緭鍏ラ鐩 printf("璇疯緭鍏ユ暟鐙〃锛歕n");for(i=0;i<9;i++){ printf("绗%d琛岋細",i+1);for(j=0;j<9;j++){ scanf("%d",&t);if(t!=0){ a[i][j][0]=t;fun(a...
  • 濡備綍C璇█缂栧啓鏁扮嫭娓告垙
    绛旓細褰撳勾鎴戜滑鍋氬ぇ绋嬬殑鏃跺欐湰鏉ヤ篃鎯鍋氭暟鐙鏉ョ潃,鍚庢潵鏃堕棿涓嶅娌″仛鎴.涓嶇煡閬撲笓涓氫汉澹庝箞缂栫殑,鍙兘鎻愪緵涓鐐瑰綋鏃剁殑鎬濊矾缁欎綘,1.9*9涓牸瀛愬搴涓涓鏁扮粍A,鏁扮粍鐨勭涓涓间粠0鍒9琛ㄧず鍏朵腑濉殑鏁板瓧,0灏辨槸涓嶅~,鍙︿竴涓艰〃绀哄畠鍦ㄦ闈笂鐨勪綅缃氨鏄潗鏍 2.闇瑕10寮犲浘鐗,绌虹櫧鍜9涓暟瀛 3.閫氳繃瀵归紶鏍囩偣鍑荤殑鍙嶅簲...
  • 鐢–璇█ 鎵撳嵃鍑涓涓 10x10鐨鏁扮嫭,鏁板瓧涓0-9 瑕佷唬鐮佽繍琛屾纭
    绛旓細10鏍规湰灏变笉閫傚悎浣滀负鏁扮嫭锛 鍥犱负瀹冧笉鑳藉垎瑙d负n鐨勫钩鏂 浼拌瑕佺殑鏄繖鏍风殑涓涓鏁扮粍锛屼綘鎶婄1鍒10鍒楅殢鏈虹粍鍚堜竴涓嬪氨鍙互杈撳嚭澶氱粍缁撴灉 0123456789 1234567890 2345678901 3456789012 4567890123 5678901234 6789012345 7890123456 8901234567 9012345678
  • 鍩轰簬SAT鐨鏁扮嫭娓告垙姹傝В绋嬪簭,姹C璇█浠g爜
    绛旓細鐢0浠h〃瑕佸~鐨勬暟 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 16:case 256:return 9;鍩虹瑙f硶 鎺掗櫎娉曪紙鎽掗櫎娉曪級鎽掗櫎娉曪細鐢ㄦ暟瀛...
  • 姹鏁扮嫭婧愮爜
    绛旓細鐢–璇█缂栧啓鐨,绋嬪簭瀹為獙鍋氬弬鑰冪殑... 鐢–璇█缂栧啓鐨,绋嬪簭瀹為獙鍋氬弬鑰冪殑 灞曞紑  鎴戞潵绛 ...startB[i]= ((i/9)/3)*27+ ((i%9)/3)*3 ; // 涔濆鏍间綅缃殑璧风偣 } for(i=0; i<9
  • c璇█棰樼洰-鏁扮嫭-姹傚ぇ绁炶В閲婇鐩剰鎬濆拰鍒嗘瀽棰樼洰鍜屼唬鐮
    绛旓細include<stdio.h>int result=0; //缁撴灉鏁癷nt main(){int a[9][9];void Sudoku(int a[9][9],int n);printf("璇疯緭鍏鏁扮嫭涓殑鍘熷鏁版嵁锛屾病鏈夋暟鎹殑鐢0浠f浛銆俓n");for(int i=0;i<9;i++){ printf("璇疯緭鍏ョ%d琛岀殑9涓暟锛",i+1); for(int j=0;j<9;j++) scanf("%d",&...
  • C璇█鐢ㄥ洖婧硶瑙鏁扮嫭,璇烽棶鍝噷鏈夐棶棰
    绛旓細int t1=(i/3)*3,t2=(j/3)*3;for(m=t1;m<t1+3;m++){ for(n=t2;n<t2+3;n++){ if(a[m][n] == k)return false;} } //琛岃繑true return true;} //鏁扮嫭姹傝В鍑芥暟 void Sudoku(int a[9][9],int n){ int temp[9][9];int i,j;for(i=0;i<9;i++){ for(j=0;j...
  • 鐧惧害鐨c璇█缂鐨鏁扮嫭绋嬪簭,鐪嬩簡寰堜箙杩樻槸涓嶅お鑳界悊瑙,璇锋暀涓涓嬫庝箞鐞嗚В杩...
    绛旓細涓昏鐢ㄧ殑鏄┓涓炬硶銆傚垰寮濮嬬殑鎬濇兂鏄噯澶鍋氫竴涓暟鐙搴撳幓鐨勶紝绋嬪簭涔熻繍琛岀殑寰堝ソ锛屼絾闂鍑虹幇浜嗭紝纭洏绌洪棿涓嶅锛屼竴涓灏忔椂鐢ㄤ簡鎴20G鐨勭‖鐩樸傚悗鏉ユ垜缁堟浜嗐傛垜鐪嬩簡涓嬶紝搴旇灞炰簬璇曟帰鍜屽洖鏈旂殑鎬濇兂鐨勬潵瑙g殑銆備綘鏈変粈涔堟暟鐙殑闂鍙互闂垜鍝︼紝鎴戜篃鎯抽獙璇佷竴涓嬶紝鎴戠殑绋嬪簭鏄笉鏄粈涔堟牱闅惧害鐨勬暟鐙兘鑳借В銆
  • 鐢╟璇█鍐欎竴涓绠鏄撴娊濂栫▼寮,瑕佹眰鏈夊妗f鐨勬搷浣
    绛旓細鐢╟璇█鍐欎竴涓绠鏄撴娊濂栫▼寮,瑕佹眰鏈夊妗f鐨勬搷浣 hello; 20涓彿鐮佸湪钀ゅ箷涓婃粴鍔ㄨ緭鍑,鍙互鐢ㄦ椂闂村嚱寮忓拰娓呭睆鍑藉紡澶勭悊銆傛渶鍚庡洖杞﹂敭閫変腑鍋滄,鍏跺疄涔熷氨鏄竴涓烦鍑烘鍥炲湀鐨勬楠ゃ傚棷,杩欐牱搴旇鍙互浜嗗惂銆傛垜涔熸病鍋,寰堜箙娌″啓绋嬪紡浜嗐備綘璇曠潃鍐欎竴涓嬨 鐢╟璇█鍐欎竴涓畝鏄撴娊濂栫▼寮,瑕佹眰娑夊強鍒版。妗堢殑鎿嶄綔 #include <bits/std...
  • 澶у甯垜鐪嬬湅鎴c璇█浠g爜鍝噷閿欎簡
    绛旓細include <stdio.h>//姝ゅ鏄鏁扮嫭棰樼洰,鎷0浠f浛,浼氭湁涓涓囦釜绛旀,鍙互鑷繁鎹㈤int q[9][9] = {{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,...
  • 扩展阅读:1-3数独 ... 唯一解的数独生成器c语言 ... 1-4数独题目初级 ... 数独简单题目3x3规律 ... 1-3数独题目 ... 1-4数独题目图片 ... 数独3x3的题目图片 ... 儿童数独3 3入门题目 ... c语言数独程序 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网