急求高手帮助,n重循环问题 没太看懂要干嘛。至于你说的问题,你可以再用一个循环嘛。递归会比较直接一点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你想要的功能虽然很奇怪,但是用递归还是能够实现package csdn;public class MinMaterImpl { public static void main(String[] args) { int n = 80; // int[] p = { 30, 28, 20 }; int[] p = { 30, 28, 20, 16, 11 }; int s = 1; MinMaterImpl demo = new MinMaterImpl(); int[][] ak = demo.acc(n, p, s); for (int i = 0; i < ak.length; i++) { for (int j = 0; j < ak[i].length; j++) { System.out.print(ak[i][j] + "\t"); } System.out.println(); } } public void fun(int eMaterial, int[] pro, int s, int[] rst, int[][] scheme, int[] m, int n) { for (int i = 0; i <= pro[pro.length - n]; ++i) { rst[pro.length - n] = i; if (n > 1) { fun(eMaterial, pro, s, rst, scheme, m, n - 1); } else { int r = eMaterial; for (int j = 0; j < rst.length; ++j) { r = r - rst[j] * (pro[j] + s); } if (r == -1) { r = 0; } if (r >= 0 && r < pro[2]) { if (k < 14) { k++; } for (int j = 0; j < rst.length; ++j) { scheme[j][k] = rst[j]; } scheme[rst.length][k] = r; } } } } static int k = 0; private int[][] acc(int eMaterial, int[] pro, int s) { // TODO Auto-generated method stub int n = pro.length; int[][] scheme = new int[n + 1][25]; // 你的p数组变大的同时,应该增大该数组第一维的值,否则会超出数组范围 int[] m = new int[n]; int[] rst = new int[pro.length]; for (int i = 0; i < n; i++) { scheme[i][0] = pro[i]; m[i] = eMaterial / pro[i]; } for (int i1 = 0; i1 <= m[0]; i1++) { rst[0] = i1; if (n > 1) { fun(eMaterial, pro, s, rst, scheme, m, n - 1); } } return scheme; }}但是当你增大你的p数组时,你必须适当增大你的scheme数组的第一维,否则k会超出scheme的第一维 做材料分割优化的问题,想得到一种材料切割不同产品的各种方案。 java 读取文件加锁 Eclipse 打包jar问题。。。 关于查询的一个问题? 如何获取数组元素的问题 关于swing控件请教各位前辈 本人是菜鸟.求高手!怎么做个公司的雇员工资支付程序~~~ 关于继承的一个非常有趣的问题? 初学数据库,求助 关于ArrayList 在applet中怎样测试? 请求组织点拨一个“图文混排”的“小技术难点”. 如何用Java实现区分虚拟机的IP地址和本机正在连接网络使用的ip地址
package csdn;public class MinMaterImpl { public static void main(String[] args) {
int n = 80;
// int[] p = { 30, 28, 20 };
int[] p = { 30, 28, 20, 16, 11 };
int s = 1;
MinMaterImpl demo = new MinMaterImpl();
int[][] ak = demo.acc(n, p, s);
for (int i = 0; i < ak.length; i++) {
for (int j = 0; j < ak[i].length; j++) {
System.out.print(ak[i][j] + "\t");
}
System.out.println();
} } public void fun(int eMaterial, int[] pro, int s, int[] rst, int[][] scheme,
int[] m, int n) {
for (int i = 0; i <= pro[pro.length - n]; ++i) {
rst[pro.length - n] = i;
if (n > 1) {
fun(eMaterial, pro, s, rst, scheme, m, n - 1);
} else {
int r = eMaterial;
for (int j = 0; j < rst.length; ++j) {
r = r - rst[j] * (pro[j] + s);
}
if (r == -1) {
r = 0;
}
if (r >= 0 && r < pro[2]) {
if (k < 14) {
k++;
}
for (int j = 0; j < rst.length; ++j) {
scheme[j][k] = rst[j];
}
scheme[rst.length][k] = r;
}
}
}
} static int k = 0; private int[][] acc(int eMaterial, int[] pro, int s) {
// TODO Auto-generated method stub
int n = pro.length;
int[][] scheme = new int[n + 1][25]; // 你的p数组变大的同时,应该增大该数组第一维的值,否则会超出数组范围
int[] m = new int[n]; int[] rst = new int[pro.length];
for (int i = 0; i < n; i++) {
scheme[i][0] = pro[i];
m[i] = eMaterial / pro[i];
}
for (int i1 = 0; i1 <= m[0]; i1++) {
rst[0] = i1;
if (n > 1) {
fun(eMaterial, pro, s, rst, scheme, m, n - 1);
}
}
return scheme;
}
}但是当你增大你的p数组时,你必须适当增大你的scheme数组的第一维,否则k会超出scheme的第一维
做材料分割优化的问题,想得到一种材料切割不同产品的各种方案。