请教高手一个关于数组的编程 1-10 这十个数字 要求分成若干组,每组七个数字。每组内部的数字不能重复,组与组之间的七个数字不能完全相同。大哥们能给些思路吗?初学,思路希望是基本些的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很明显这是一个组合问题,高中就学过.有递归就可以很容易做到,可我认为用递归不那么好理解.由于这道题的数目比较小,可以用这种方法.(数字太多就不好办了) 10选7不好办,可以有10选3,然后将其余的7个放入数组. public void main(String arg[]) { int a,b,c,counter=0; int array[1000][7],i,j; for(a=1;a<=10;a++) for(b=1;b<=10;b++) for(c=1;c<=10;c++) { if(a>b&&b>c) { for(j=0,i=1;i<=10;i++) if(i!=a&&i!=b&&i!=c) array[counter][j++]=i; counter++; } } counter--; while(counter) { for(i=0;i<7;i++) System.out.print(" "+array[counter]); System.out.println(" "); counter--; }} 最外层的三个for循环将产生3的10次方个序列而只保留a>b>c这一种情况就能保证不重复. 这是一个组合问题,也就是从 10 个数字当中选择 7 个,有多少种不同的选法。这样好理解些。根据数学公式 n!/[(n-m)!m!],应该有 10!/(3!7!) = 120 种。解决思路:以 4 选 2 为例,按照从小到大的顺序来选以避免重复。首先选 1,那么有 2,3,4 三种选法;首先选 2,那么有 3,4 两种。首先选 3,则只有一种,那么 4 选 2 总共可以列举出 6 种选法。 报歉,上面的输出语句有误.System.out.print(" "+array[counter]); 改为System.out.print(" "+array[counter][i]); 递归剔除字符创中的逗号 请教一个小问题 如何真正判断文件的格式呢? 鼠标事件 window.open("xx.jsp")这样是开了一个新线程么? netscape.javascript包,是否免费使用 oracle 安装 请教如何打开特定的UDP端口 无根树怎么建 为了避免one和two相互影响,我是不是应该使用这样的方式创建one和two? 有人知道sort的具体过程吗 变态公司的上机测试,40分钟你行吗?
由于这道题的数目比较小,可以用这种方法.(数字太多就不好办了)
10选7不好办,可以有10选3,然后将其余的7个放入数组.
public void main(String arg[])
{
int a,b,c,counter=0;
int array[1000][7],i,j;
for(a=1;a<=10;a++)
for(b=1;b<=10;b++)
for(c=1;c<=10;c++)
{
if(a>b&&b>c)
{
for(j=0,i=1;i<=10;i++)
if(i!=a&&i!=b&&i!=c)
array[counter][j++]=i;
counter++;
}
}
counter--;
while(counter)
{
for(i=0;i<7;i++)
System.out.print(" "+array[counter]);
System.out.println(" ");
counter--;
}
}
最外层的三个for循环将产生3的10次方个序列而只保留a>b>c这一种情况就能保证不重复.
以 4 选 2 为例,按照从小到大的顺序来选以避免重复。首先选 1,那么有 2,3,4 三种选法;首先选 2,那么有 3,4 两种。首先选 3,则只有一种,那么 4 选 2 总共可以列举出 6 种选法。
System.out.print(" "+array[counter]); 改为System.out.print(" "+array[counter][i]);