蓝桥杯 第十天 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 分钟前
C++修炼:string类的使用
开发语言·c++·算法
HR Zhou10 分钟前
群体智能优化算法-大猩猩部落优化算法(Gorilla Troops Optimizer, GTO,含Matlab源代码)
算法·机器学习·数学建模·matlab·群体智能优化
老马啸西风41 分钟前
Neo4j GDS-06-neo4j GDS 库中社区检测算法介绍
网络·算法·云原生·中间件·neo4j
地平线开发者1 小时前
精度调优|conv+depth2space 替换 resize 指导
算法·自动驾驶
照海19Gin2 小时前
数据结构之约瑟夫环的问题
c语言·数据结构·算法
Joe_Wang52 小时前
[leetcode]1749. 任意子数组和的绝对值的最大值(dp)
算法·leetcode
烟锁池塘柳02 小时前
【数学建模】(启发式算法)遗传算法:自然选择的计算模型
算法·数学建模·启发式算法
Min_小明2 小时前
CMake 简单使用总结
android·开发语言·算法
森焱森3 小时前
格雷码、汉明码,CRC校验的区别
服务器·c语言·网络·人工智能·算法
三歪爱三玖3 小时前
【蓝桥杯】单片机设计与开发,PWM
单片机·职场和发展·蓝桥杯