蓝桥杯 第十天 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;//回溯
}



		}
}

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

相关推荐
方方洛4 分钟前
vllm教程-03-架构设计
算法·架构
玄昌盛不会编程6 分钟前
LeetCode——2091. 从数组中移除最大值和最小值
java·算法·leetcode
如何取名18 分钟前
结合实际业务进行LRU淘汰算法优化设计(数据库开发日志)
数据库·算法
aichitang202423 分钟前
快乐泛函每一天:希尔伯特空间中的最佳逼近与正交投影定理
人工智能·考研·算法·ai·面试·泛函分析
淬炼之火27 分钟前
笔记:Visually-Guided Policy Optimization for Multimodal Reasoning
人工智能·笔记·算法·机器学习·语言模型·自然语言处理
一只QAQ29 分钟前
c++项目
java·c++·算法
学习星球33 分钟前
空天地一体化网络(NTN)深度解析:从Starlink D2C到3GPP NTN,卫星直连手机是如何实现的?
网络·人工智能·算法·智能手机·php
科技林总44 分钟前
提示词测评落地全流程
人工智能·算法
Chester_19991 小时前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
晴天的雨.9921 小时前
类和对象下(内部类,匿名对象,对象拷贝时的编译器优化)
开发语言·c++·算法