java实现9宫格及九宫格求解的程序_第1页
java实现9宫格及九宫格求解的程序_第2页
java实现9宫格及九宫格求解的程序_第3页
java实现9宫格及九宫格求解的程序_第4页
java实现9宫格及九宫格求解的程序_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java实现九宫图:要求如下:要求是横排,竖排,还有大九宫格中的9个小九宫格都是1-9各不相同。 如图,图上已经给了几个数了。没有循环输出的程序如下:import java.util.Scanner;class jiugongjiuge public static void main(String args) int g = new int99; boolean bol = new boolean910;/判断随机数是不是位0的数组 for(int i=0; i<9; i+) int k=0; for(int j=1;j<10;j+) bolij=false; /第0个往后的都是0

2、 boli0=true; /第0个是1 for (int j = 0; j < 9; ) double a = Math.random() * 10; a = Math.ceil(a); int randomNum = new Double(a).intValue()%10;/随机产生的数字除以10取余数 if(bolirandomNum)/判断产生的随机数不是0 continue; /跳出这次的循环进行下次循环 gik=randomNum; k+; bolirandomNum= true; j+; flag:for(int n=0; n<i;n+) for(int m=0; m&

3、lt;9;m+) while(gim=gnm) i-; break flag; while(i=8) int sum=0; sum=g00+g01+g02+g10+g11+g12+g20+g21+g22; while(sum!=45) i=0; for (int i=0; i<9; i+) for(int k=0; k<9; k+) System.out.print(gik+"t"); System.out.println(); 可以看到错误结果的程序:import java.util.Scanner;class jiugongjiuge public stat

4、ic void main(String args) int g = new int99; boolean bol = new boolean910;/判断随机数是不是位0的数组 for(int i=0; i<9; i+) int k=0; for(int j=1;j<10;j+) bolij=false; /第0个往后的都是0 boli0=true; /第0个是1 for (int j = 0; j < 9; ) double a = Math.random() * 10; a = Math.ceil(a); int randomNum = new Double(a).int

5、Value()%10;/随机产生的数字除以10取余数 if(bolirandomNum)/判断产生的随机数不是0 continue; /跳出这次的循环进行下次循环 gik=randomNum; k+; bolirandomNum= true; j+; flag:for(int n=0; n<i;n+) for(int m=0; m<9;m+) while(gim=gnm) i-; break flag; while(i=8) flag0:for(int m=0; m<3; m+) for(int n=0; n<3; n+) for(int l=0; l<3; l+

6、) int sum2=0; int sum1=0; for(int k1=0; k1<3; k1+) sum1+=g3*m+k13*n+l; sum2+=sum1; if(sum2!=45) i=-1; System.out.println("此次产生的数组有错!"); for (int i1=0; i1<9; i1+) for(int k2=0; k2<9; k2+) System.out.print(gi1k2+"t"); System.out.println(); break flag0; else System.out.prin

7、tln("此次产生的数组正确!"); for (int i1=0; i1<9; i1+) for(int k2=0; k2<9; k2+) System.out.print(gi1k2+"t"); System.out.println(); 求解数独所有解(适合所有数独)的PASCAL程序 var a:packed array1.9,1.9 of longint; i,j,k,p,l,m,n,ii,ans,mm,oo:longint; s,s1:packed array0.100,1.4 of longint; x,y,xy:packed a

8、rray0.9,-1.9 of boolean; /横向,纵向,九宫的检验 t,tt,u:boolean; opo:longint; ll:packed array0.9,0.9,-1.11 of longint; /存储每个空格可能出现的数字 提高程序效率 function max(a,b:longint):longint; begin if b>a then exit(b) else exit(a); end; function choose2(x:longint):longint; begin case x of 0.3:exit(1); 4.6:exit(2); 7.9:exit

9、(3); end; end; function iff:boolean; /搜索结束条件 begin if (k<1) then exit(false) else exit(true); end; function pa(i,j:longint):longint; /得到九宫格编号 var o,kk,jj,ii:longint; begin o:=choose2(i); kk:=choose2(j); case o of 1:jj:=0; 2:jj:=3; 3:jj:=6; end; exit(jj+kk); end; begin fillchar(x,sizeof(x),true);

10、fillchar(y,sizeof(y),true); fillchar(xy,sizeof(xy),true); for i:=1 to 9 do for j:=1 to 9 do begin read(ii); ai,j:=ii; if ii=0 then begin inc(n); s1n,1:=j; s1n,2:=i; end else begin xi,ii:=false; yj,ii:=false; xypa(i,j),ii:=false; end; end; for i:=1 to 9 do for j:=1 to 9 do begin for oo:=1 to 9 do if

11、xi,ooand yj,oo and xypa(i,j),oo then begin inc(lli,j,-1); lli,j,lli,j,-1:=oo; end; end; for i:=1 to n do si:=s1n-i+1; k:=1; i:=0; t:=true;tt:=false; whileiff do begin if t then begin for i:=llsk,2,sk,1,-1 downto 0 do if (xsk,2,llsk,2,sk,1,iand ysk,1,llsk,2,sk,1,i) and xypa(sk,2,sk,1),llsk,2,sk,1,i t

12、hen begin t:=true; break; end; end else begin i:=sk,4; tt:=false; repeat dec(i); until (xsk,2,llsk,2,sk,1,iand ysk,1,llsk,2,sk,1,i) and xypa(sk,2,sk,1),llsk,2,sk,1,i)or (i<1); end; if i<1 then begin sk,3:=0; ask,2,sk,1:=0; dec(k); t:=false;i:=sk,3; xsk,2,i:=true;ysk,1,i:=true;/向上回溯 xypa(sk,2,s

13、k,1),i:=true; end else t:=true; if t then begin sk,4:=i; sk,3:=llsk,2,sk,1,i; ask,2,sk,1:=sk,3; xsk,2,sk,3:=false; ysk,1,sk,3:=false; xypa(sk,2,sk,1),sk,3:=false; inc(k); end; tt:=false; if k>n then begin inc(opo); writeln(opo); / 计数器 for i:=1 to 9 do begin for j:=1 to 9 do write(ai,j,' '

14、); writeln; end; writeln; mm:=0; xsk-1,2,sk-1,3:=true; ysk-1,1,sk-1,3:=true; xypa(sk-1,2,sk-1,1),sk-1,3:=true; dec(k); t:=false; end; end; writeln(opo); end. 求解数独的简单C语言程序(适合仅有唯一解的数独)/*数独求解*/ #include <stdio.h> void print(int a99) /*格式化输出数独*/ int i,j; for(i=0;i<9;i+) for(j=0;j<9;j+) print

15、f("%d ",aij); printf("n"); void ini_logo(int logo1099,int arr99) /*初始化标志数组*/ int i,j,k,p,r,s,t; for(i=0;i<9;+i) for(j=0;j<9;+j) if(arrij!=0) for(k=1;k<=9;+k)logokij=1; for(i=0;i<9;+i) for(j=0;j<9;+j) if(arrij!=0) p=arrij; for(r=0;r<9;+r) logopir=1;logoprj=1; for

16、(s=(i/3)*3;s<(i/3)*3+3;+s) for(t=(j/3)*3;t<(j/3)*3+3;+t) logopst=1; int add(int arr99,int logo1099,int m,int n,int k) /*arrmn插入数字,修改arr,logo数组*/ int i,s,p,t; arrmn=k; for(p=1;p<=9;+p) logopmn=1; for(i=0;i<9;+i) logokmi=1; logokin=1; for(s=(m/3)*3;s<(m/3)*3+3;+s) for(t=(n/3)*3;t<(n/

17、3)*3+3;+t) logokst=1; int check(int logo1099,int arr99) /*检测行列和小九宫格*/ int i,j,k,p,q,r,s,t,m,n,tag=0; /*tag标志本轮是否修改*/ for(k=1;k<=9;+k) for(i=0;i<9;+i) p=0;q=0; for(j=0;j<9;+j) if(logokij=0)r=j;p+; /*检测行*/ if(logokji=0)s=j;q+; /*检测列*/ if(p=1)tag=1;add(arr,logo,i,r,k); if(q=1)tag=1;add(arr,log

18、o,s,i,k); /*满足一个添加的条件,修改arr,logo数组和标志tag*/ for(i=0;i<9;i=i+3) /*检测小九宫格*/ for(j=0;j<9;j=j+3) t=0; for(m=i;m<i+3;+m) for(n=j;n<j+3;+n) if(logokmn=0)q=m;s=n;t+; if(t=1)tag=1;add(arr,logo,q,s,k); return(tag); main() int arr99= 0,0,0,0,0,0,0,0,0, /*数独初始化,其中0表示数字未给出*/ 0,2,3,0,0,0,7,8,0, 1,0,0,4,0,6,0,0,9, 4,0,0,0,5,0,0,0,1, 9,0,0,0,0,0,0,0,6, 0,6,0,0,0,0,0,9,0, 0,0,5,0,0,0,8,0,0, 0,0,0,3,0,1,0,0,0, 0,0,0,0,9,0,0,0,0 , logo1099=0,i,j; ini_logo(logo,arr); while(check(logo,arr)=1) /*当一轮没有检测出,即结束*/ print(arr); = Java解法(循环递归法): private boolean counting(int row, int col) / Fill the number

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论