java 蛇形矩阵

/*

  • 1 2 6 7 15 16 28
  • 3 5 8 14 17 27
  • 4 9 13 18 26
  • 10 12 19 25
  • 11 20 24
  • 21 23
  • 22

*/
这种解法完全是靠找到的规律

public class _4 {
	static int f(int m){
		int x=0;
		 int a=2*m-1;//45度看,是第a行
		 for(int i=1;i<a;i++){//45度看,第一行有1个,第二行有2个,个数加起来就是第a行最后的数
			 x+=i;//45度看,1个数+2个数+3个数+...,得到(a-1)行最后面的数
		 }
		 x=x+a/2+1;//45度看,a-1行最后的数字 + 第a行左一半的个数,再+1,是最中间的数
		 return x;
	}
	public static void main(String[] args){
		 System.out.println(f(20));
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
邻接矩阵是一种常用的图的表示方法,它使用一个二维数组来表示图中各个节点之间的连接关系。在邻接矩阵中,行和列分别代表图中的节点,而矩阵中的元素表示节点之间的边的存在与否。 DFS(深度优先搜索)是一种图遍历算法,它从图的某个节点开始,沿着一条路径尽可能深入地访问节点,直到无法继续深入为止,然后回溯到上一个节点,继续访问其他未被访问过的节点,直到所有节点都被访问过为止。 在Java中,可以使用邻接矩阵来实现DFS算法。下面是一个简单的Java代码示例: ```java import java.util.Stack; public class Graph { private int[][] adjacencyMatrix; private int numVertices; public Graph(int numVertices) { this.numVertices = numVertices; adjacencyMatrix = new int[numVertices][numVertices]; } public void addEdge(int source, int destination) { adjacencyMatrix[source][destination] = 1; adjacencyMatrix[destination][source] = 1; } public void dfs(int startVertex) { boolean[] visited = new boolean[numVertices]; Stack<Integer> stack = new Stack<>(); stack.push(startVertex); while (!stack.isEmpty()) { int currentVertex = stack.pop(); System.out.print(currentVertex + " "); visited[currentVertex] = true; for (int i = 0; i < numVertices; i++) { if (adjacencyMatrix[currentVertex][i] == 1 && !visited[i]) { stack.push(i); } } } } public static void main(String[] args) { Graph graph = new Graph(5); graph.addEdge(0, 1); graph.addEdge(0, 2); graph.addEdge(1, 3); graph.addEdge(1, 4); System.out.println("DFS traversal starting from vertex 0:"); graph.dfs(0); } } ``` 上述代码中,Graph类表示图,使用邻接矩阵来存储图的连接关系。addEdge方法用于添加边,dfs方法用于进行深度优先搜索遍历。在main方法中,创建一个图对象,并添加边,然后调用dfs方法进行遍历。 希望以上代码能够帮助到你!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值