for (int i = 0; i < 7; i++) { System.out.println(result[i]); } }
fred_duxiao() 说得对;也不对,不对是因为剩下的数是等于0,题目是说随即7个数,每个数的范围在[0,35],不是说的是7个范围在(0,35]的数。如果是那样的话,我来改改 int count = 102; int temp; int maxNum = 35; int result[] = new int[7]; while (true) { for (int i = 0; i < 6; i++) { result[i] = (int) (Math.random() * (count > maxNum ? maxNum : count)); count -= result[i]+i;
public static void main(String[] args) {
for(int n1 = 0; n1 < 36; n1++){
for(int n2 = 0; n2 < 36; n2++){
for(int n3 = 0; n3 < 36; n3++){
for(int n4 = 0; n4 < 36; n4++){
for(int n5 = 0; n5 < 36; n5++){
for(int n6 = 0; n6 < 36; n6++){
for(int n7 = 0; n7 < 36; n7++){
if (n1+n2+n3+n4+n5+n6+n7 == 108){
System.out.println(" "+n1+" "+n2+" "+n3+" "+n4+" "+n5+" "+n6+" "+n7);
}
}
}
}
}
}
}
}
}
public static void main(String[] args) {
for(int n1 = 0; n1 < 36; n1++){
for(int n2 = 0; n2 < 36; n2++){
if(n2 == n1){
continue;
}
for(int n3 = 0; n3 < 36; n3++){
if(n3 == n1 || n3 == n2){
continue;
}
for(int n4 = 0; n4 < 36; n4++){
if(n4 == n1 || n4 == n2 || n4 == n3){
continue;
}
for(int n5 = 0; n5 < 36; n5++){
if(n5 == n1 || n5 == n2 || n5 == n3 || n5 == n4){
continue;
}
for(int n6 = 0; n6 < 36; n6++){
if(n6 == n1 || n6 == n2 || n6 == n3 || n6 == n4 || n6 == n5){
continue;
}
for(int n7 = 0; n7 < 36; n7++){
if(n7 == n1 || n7 == n2 || n7 == n3 || n7 == n4 || n7 == n5 || n7 == n6){
continue;
}
if (n1+n2+n3+n4+n5+n6+n7 == 108){
System.out.println(" "+n1+" "+n2+" "+n3+" "+n4+" "+n5+" "+n6+" "+n7);
}
}
}
}
}
}
}
}
}
int maxNum = 35;
int result[] = new int[7]; for (int i = 0; i < 6; i++) {
result[i] = (int) (Math.random() * (count > maxNum ? maxNum : count));
count -= result[i];
}
result[6] = count;
for (int i = 0; i < 7; i++) {
System.out.println(result[i]);
}
}这样应该符合你的要求吧?
是否<35。还是不够完整
int maxNum = 35;
int result[] = new int[7];
while (true) {
for (int i = 0; i < 6; i++) {
result[i] = (int) (Math.random() * (count > maxNum ? maxNum : count));
count -= result[i];
}
if (count <= 35) {
result[6] = count;
break;
}
for (int i = 0; i < 7; i++) {
System.out.println(result[i]);
}
}
int maxNum = 35;
int result[] = new int[7];
result[6]=108;
while(result[6]>35)
{
for (int i = 0; i < 6; i++)
{
result[i] = (int) (Math.random() * (count > maxNum ? maxNum : count));
count -= result[i];
}
result[6] = count;
}
for (int i = 0; i < 7; i++)
{
System.out.println(result[i]);
}
int count = 108;
int maxNum = 35;
int result[] = new int[7];
while (true) {
for (int i = 0; i < 6; i++) {
result[i] = (int) (Math.random() * (count > maxNum ? maxNum : count));
count -= result[i];
}
if (count <= 35) {
result[6] = count;
count=108; //修改的地方
break;
}
for (int i = 0; i < 7; i++) {
System.out.println(result[i]);
}
}
int count = 102;
int temp;
int maxNum = 35;
int result[] = new int[7];
while (true) {
for (int i = 0; i < 6; i++) {
result[i] = (int) (Math.random() * (count > maxNum ? maxNum : count));
count -= result[i]+i;
temp = count/(i+1);
if( maxNum > temp)
{
maxNum = temp;
}
}
if (count <= 35) {
result[6] = count;
break;
}
for (int i = 0; i < 7; i++) {
System.out.println(result[i]);
}
}
这样应该可以了吧。
count=108又有什么关系。最后还是得到了result[i]。。只是可能逻辑不是很好
改成这样逻辑好一些
int count = 108;
int maxNum = 35;
int result[] = new int[7];
while (true)
{
for (int i = 0; i < 6; i++)
{
result[i] = (int) (Math.random() * (count > maxNum ? maxNum : count));
count -= result[i];
}
if (count <= 35)
{
result[6] = count;
break;
}
count=108;
}
for (int i = 0; i < 7; i++)
{
System.out.println(result[i]);
}