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



		}
}

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

相关推荐
Matlab程序猿小助手1 分钟前
【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。
开发语言·网络·算法·matlab·kmeans·simulink
Codeking__44 分钟前
滑动窗口——长度最小子数组
算法
J先生x1 小时前
【IP101】图像分割技术全解析:从传统算法到深度学习的进阶之路
图像处理·人工智能·深度学习·学习·算法·计算机视觉
NON-JUDGMENTAL1 小时前
第2章 算法分析基础
java·数据结构·算法
独行soc1 小时前
2025年渗透测试面试题总结-网络安全、Web安全、渗透测试笔试总结(一)(附回答)(题目+回答)
linux·运维·服务器·安全·web安全·面试·职场和发展
写个博客2 小时前
代码随想录算法训练营第三十三天(补)
算法
wen__xvn2 小时前
每日一题洛谷P1025 [NOIP 2001 提高组] 数的划分c++
数据结构·c++·算法
朱剑君3 小时前
排序算法——桶排序
算法·排序算法
MeiYu_1233 小时前
【数据结构与算法】常见排序算法详解(C++实现)
数据结构·c++·算法·排序算法
请来次降维打击!!!3 小时前
优选算法系列(8.多源BFS)
java·c++·算法·宽度优先