数度游戏

public class Test7 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] arr = {
					{0,9,5,0,2,0,0,6,0},  1 每行不能有重复数字  2每列不能有重复数字  3每个九宫格不能有重复数字
					{0,0,7,1,0,3,9,0,2},
					{6,0,0,0,0,5,3,0,4},
					{0,4,0,0,1,0,6,0,7},
					{5,0,0,2,0,7,0,0,9},
					{7,0,3,0,9,0,0,2,0},
					{0,0,9,8,0,0,0,0,6},
					{8,0,6,3,0,2,1,0,5},
					{0,5,0,0,7,0,2,8,3}};
		
		dfs(arr,0,0);	
	}
	public static void dfs(int[][]arr,int row,int colum) {
		if (row==8 && colum==9) {//错误的根源,如果找到了就要打印出来,
//如果return返回那么程序认为这一条正确解也是错的,那么就所有路都不通了。

			for(int i=0;i<9;i++) {//打印最终答案
					for(int j=0;j<9;j++) {
						System.out.print(arr[i][j]+" ");
					}
					System.out.println();
			}
			return;
		}
		if(colum==9) {//如果列数等于9,则进入到下一行继续找到
			row++;
			colum=0;
		} 
		if(arr[row][colum]==0) {//如果是0,代表未填充
			//判断给i行j列放1-9中的任意一个数是否能满足规则
			for(int i=1;i<=9;i++) {
				if(isOK(arr,i,row,colum)) {
					//将该值赋给该空格,然后进入下一个空格
					arr[row][colum]=i;
					dfs(arr,row,colum+1);
					//若下一个返回不符合,则需要将该值置位0
					arr[row][colum]=0;
				}
			}
		} else{
			dfs(arr,row,colum+1);
		}
	}
	
	public static boolean isOK(int[][] arr,int target,int row,int colum) {
		for(int i=0;i<9;i++) {//判断这一列是否有相同的
			if(arr[i][colum]==target) {
				return false;
			}
		}
		
		for(int i=0;i<9;i++) {//判断这一行是否有相同的
			if(arr[row][i]==target) {
				return  false;
			}
		}
		int ii=row/3;
		int jj=colum/3;
		for(int i=0;i<3;i++) {
			for(int j=0;j<3;j++) {
				if(arr[ii*3+i][jj*3+j]==target) {
					return false;
				}
			}
		}
		return true;	
	}	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的随机数字消消乐游戏的 JavaScript 实现。以下是代码示例: ```javascript // 设置游戏区域的行数和列数 const ROWS = 6; const COLS = 6; // 设置每个方格的宽度和高度 const CELL_SIZE = 50; // 获取游戏区域的 DOM 元素 const gameBoard = document.getElementById('game-board'); // 创建一个二维数组来表示游戏区域中的方格 let grid = new Array(ROWS); for (let i = 0; i < ROWS; i++) { grid[i] = new Array(COLS); } // 创建游戏区域中的所有方格,并将它们添加到 DOM 中 for (let i = 0; i < ROWS; i++) { for (let j = 0; j < COLS; j++) { let cell = document.createElement('div'); cell.classList.add('cell'); cell.style.width = CELL_SIZE + 'px'; cell.style.height = CELL_SIZE + 'px'; cell.style.top = i * CELL_SIZE + 'px'; cell.style.left = j * CELL_SIZE + 'px'; gameBoard.appendChild(cell); // 生成一个随机数字,并将它赋值给当前方格 let number = Math.floor(Math.random() * 10); cell.innerText = number; // 将当前方格添加到 grid 数组中 grid[i][j] = cell; } } // 给每个方格添加点击事件 for (let i = 0; i < ROWS; i++) { for (let j = 0; j < COLS; j++) { grid[i][j].addEventListener('click', function() { // 点击方格时,检查它周围的方格是否与它的数字相同 let number = parseInt(grid[i][j].innerText); let matchedCells = []; if (i > 0 && parseInt(grid[i - 1][j].innerText) === number) { matchedCells.push(grid[i - 1][j]); } if (i < ROWS - 1 && parseInt(grid[i + 1][j].innerText) === number) { matchedCells.push(grid[i + 1][j]); } if (j > 0 && parseInt(grid[i][j - 1].innerText) === number) { matchedCells.push(grid[i][j - 1]); } if (j < COLS - 1 && parseInt(grid[i][j + 1].innerText) === number) { matchedCells.push(grid[i][j + 1]); } // 如果周围有与当前方格数字相同的方格,则将它们的数字设置为 0,并将当前方格的数字也设置为 0 if (matchedCells.length > 0) { grid[i][j].innerText = '0'; matchedCells.forEach(function(cell) { cell.innerText = '0'; }); } }); } } ``` 这段代码会生成一个 6 行 6 列的游戏区域,每个方格中都会生成一个随机数字。当用户点击某个方格时,代码会检查它周围的方格是否与它的数字相同,如果有的话,就将它们的数字设置为 0。用户可以不断点击方格,直到游戏结束为止。注意,这只是一个简单的实现,实际的游戏可能还需要考虑其他因素,比如计分、游戏结束条件等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值