动态规划排线算法问题java语言实现 在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连
来源:互联网 发布:sql多表查询语句实例 编辑:程序博客网 时间:2024/05/01 22:43
动态规划排线算法问题java语言实现
问题描述:
在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连,确定将哪些连线安排在第一层上,使得该层上有尽可能多的连线。该问题要求确定导线集Nets={(i,π(i)),1≤i≤n}的最大不相交子集
java语言
//动态规划排线算法public class DynamicAlorithm {//求最大值public static int MAX(int a,int b) {int max=a>b?a:b;return max;}public static void Circut_Alorithm(int[] a, int [][]set, int n) {int i, j;for (i = 0; i < n; i++){set[i][0] = 0;set[0][i] = 0;}for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){ //考虑两种情况if (a[i] != j)set[i][j] = MAX(set[i - 1][j], set[i][j - 1]);elseset[i][j] = set[i - 1][j - 1] + 1;}}}//回调递归计算最大不相交连线的电路排线并输出回路内容public static void Print_Circut(int i, int j, int set[][]){if (i == 0)return;if (set[i][j] == set[i - 1][j])Print_Circut(i - 1, j, set);else if (set[i][j] == set[i][j - 1])Print_Circut(i, j - 1, set);else{Print_Circut(i - 1, j - 1, set);System.out.println(" <"+i+"--"+j+"> ");}} public static void main(String[]args) { //初始化 int a[] = { 0, 6, 3, 5, 2, 9, 4, 1, 10, 7, 8 }; int set[][]=new int[11][11]; Circut_Alorithm(a, set, 10); System.out.println("最大不相交连线的个数:"+set[10][10]); System.out.println("最大不相交连线的电路排线如下:"); Print_Circut(10, 10, set);}}
结果截图:
0 0
- 动态规划排线算法问题java语言实现 在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连
- 第一次修复: 左短轴与接线柱
- 算法java实现--回溯法--电路板排线问题--排列树
- 算法java实现--分支限界法--电路板排线问题
- 用JAVA实现:非递归算法在O(n)时间内将一个含有n个元素的单链表逆置,要求其辅助空间为常量
- 设n个不同的整数排好序后存于T[1..n]中,若存在一个下标i(1≤ i ≤ n),使得T[i]=i。试设计一个有效算法找到这个下标,要求算法在最坏情形下的计算时间为O(log n)
- 【每天算法2】:用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 6.33③ 假定用两个一维数组L[1..n]和R[1..n]作为 有n个结点的二叉树的存储结构, L[i]和R[i]分别指 示结点i的左孩子和右孩子,0表示空。试写一个算法 判别结点u是否为结点v的
- 完美算法 --将一个具有n个元素的数组向左循环移动i个位置
- 暑假- 动态规划 I-(N - Coins)
- 将一个n元一维向量向左翻转i个位置的算法(一)
- 将一个n元一维向量向左翻转i个位置的算法(二)
- Java求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包动态规划问题求解)
- 【源码】用1,2,2,3,4,5这六个数字,写一个函数,打印出所有不同的排序,要求:4不能放在第三位,3与5不能相连(C语言实现)
- CF223 div2 (C)给出m个操作,1表示在串中添加一个数,2表示将前面长度为l的串复制c次添加到串尾。有n个查询,问你第i个数是什么
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- 在C语言中 i++与++i的区别
- 九章算法4:动态规划I
- Android控件: 仿探探首页 相册侧滑层叠加载
- DDD领域驱动设计
- hdu 1114 多重背包
- 技术揭秘12306改造(一):尖峰日PV值297亿下可每秒出票1032张
- 全国(大学)高等教育各学科视频教学全集
- 动态规划排线算法问题java语言实现 在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连
- BMP位图扫盲
- 加密技术
- Buffer类的详解(转)
- Linux C 吃内存的程序
- java中的压缩流
- Android 沉浸式状态栏攻略 让你的状态栏变色吧
- Navicat Premium 出现的Missing required libary sqlite.dll,998问题,解决方案
- 技术揭秘12306改造(二):探讨12306两地三中心混合云架构