蓝桥杯 第十天 2019国赛第4题 矩阵计数

最后一个用例超时了,还是记录一下

java 复制代码
import java.util.Scanner;

public class Main {
	static int visited[][];
	static int count = 0;
	static int n,m;
		public static void main(String[]args) {
			Scanner scan = new Scanner(System.in);
			
			n = scan.nextInt();//2
			m = scan.nextInt();//3
			visited = new int[n+5][m+5];
          
			cc(0,0);
			  System.out.println(count);
		}
		static void cc(int i ,int j) {
			if(i==n) {	
			//行
				
	
				for(int ii =0;ii<n;ii++) {
					for(int jj = 0;jj<m;jj++) {
						if(m>=3&&m-jj>=3) {//是否会连续一行3个都是x
							if(visited[ii][jj]==1&&visited[ii][jj+1]==1&&visited[ii][jj+2]==1)
							return;	
					}
					}
				}
				//列
				for(int ii =0;ii<m;ii++) {					
					for(int jj = 0;jj<n;jj++) {
						if(n>=3&&n-jj>=3) {//是否会连续一列3个都是x
							if(visited[jj][ii]==1&&visited[jj+1][ii]==1&&visited[jj+2][ii]==1)
							return;						
					}
					}
				}
				count++;
				return;
			}
			
			

if (j+1<m) {
	visited[i][j] = 1;
	cc(i,j+1);
	visited[i][j] = 2;
	cc(i,j+1);
	visited[i][j] = 0;//回溯
}

else {
	
	visited[i][j] = 1;
	cc(i+1,0);
	visited[i][j] = 2;
	cc(i+1,0);
	visited[i][j] = 0;//回溯
}



		}
}

把这个想象成一个二维数组就行,不用像走迷宫那样搞,会大大增运行时间

相关推荐
董董灿是个攻城狮6 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员13 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish14 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱15 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx1 天前
CART决策树基本原理
算法·机器学习
Wect1 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript