趣味程序题 昨天偶尔看到一个题目,有8个盘子排成一排,有3个苹果,要将这三个苹果放入盘子中,问有多少中排法,左边连续排三个和右边连续排三个为不同的排法,用程序实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int i; int j; int k; int count;for(i=1;i<8;i++){ for(j=1;j<8;j++){ for(k=1;k<8;k++) { if(i!=k&&i!=j&&k!=j){ count++; } } } } int count = 0;for(int u=0;u<8;u++){ for(int v=u+1;v<8;v++){ for(int w=v+1;w<8;w++){ count++; } }} int count = 0;for(int u=0;u<8;u++){ for(int v=u+1;v<8 - 1;v++){ for(int w=v+1;w<8 - 2;w++){ count++; } }}lz不是说一个盘子里只能放一个苹果么? 我这没重复放,u=8的时候,v就要从9开始算,直接不满足条件跳出u=7的时候,v=8,w也要从9开始算,也是不满足条件跳出v=u+1,w=v+1,这2句就决定了u,v,w不可能相等,苹果放不到一个盘子里 int count = 0;for(int u=0;u<8;u++){for(int v=u+1;v<8;v++){for(int w=v+1;w<8;w++){count++;}}}count = count/2; public class Handle { private static int flag = 0; public static void main(String[] args){ new Handle().addXYZ(1, 2, 3, 12); System.out.println(flag); } /** * 将第三个数从一加到N * @param x * @param y * @param z * @param n */ private void addZ(int x,int y,int z,int n){ for(;z<=n;z++){ System.out.println(x+" "+y+" "+z); flag++; } } /** * 将第二个数加一,一直加到N-1。第三个数为第二个数加1,加到N * @param x * @param y * @param z * @param n */ private void addXY(int x,int y,int z,int n){ for(;y<=n-1;y++){ addZ(x,y,y+1,n); } } /** * 将第三个数加一,一直加到N-2,第二个数为第一个数加一,一直加到N-1,第三个数为第二个数加一,一直加到N * @param x * @param y * @param z * @param n */ private void addXYZ(int x,int y,int z,int n){ for(;x<=n-2;x++){ addXY(x,x+1,x+2,n); } }}这是我写的,各位可以做个参考 你的思维很有问题,不理解的话,自己手动测试下,把int 参数改为5,可以直接看出有没有重复实践出真知的 求教MyEclipse8.6配置Tomcat问题? getContentResolver EJB的SessionBean 能用于Swing开发吗? 谈谈struts2的流程 Apache rewrite 问题 ,高分答谢啊 struts2上传为空异常 JBPM数据库同步 如何导出在线JSP页面的信息 hibernate在更新CLOB字段的时候报错(不同版本的oracle不一样) forward和sendredirect有什么区别啊? Json接收或者遍历问题 struts2 java.lang.NullPointerException 错误 请教。。。。。。。
int j;
int k;
int count;
for(i=1;i<8;i++){
for(j=1;j<8;j++){
for(k=1;k<8;k++)
{
if(i!=k&&i!=j&&k!=j){
count++;
}
}
}
}
int count = 0;
for(int u=0;u<8;u++){
for(int v=u+1;v<8;v++){
for(int w=v+1;w<8;w++){
count++;
}
}
}
for(int u=0;u<8;u++){
for(int v=u+1;v<8 - 1;v++){
for(int w=v+1;w<8 - 2;w++){
count++;
}
}
}
lz不是说一个盘子里只能放一个苹果么?
u=7的时候,v=8,w也要从9开始算,也是不满足条件跳出
v=u+1,w=v+1,这2句就决定了u,v,w不可能相等,苹果放不到一个盘子里
for(int u=0;u<8;u++){
for(int v=u+1;v<8;v++){
for(int w=v+1;w<8;w++){
count++;
}
}
}
count = count/2;
public class Handle {
private static int flag = 0;
public static void main(String[] args){
new Handle().addXYZ(1, 2, 3, 12);
System.out.println(flag);
}
/**
* 将第三个数从一加到N
* @param x
* @param y
* @param z
* @param n
*/
private void addZ(int x,int y,int z,int n){
for(;z<=n;z++){
System.out.println(x+" "+y+" "+z);
flag++;
}
}
/**
* 将第二个数加一,一直加到N-1。第三个数为第二个数加1,加到N
* @param x
* @param y
* @param z
* @param n
*/
private void addXY(int x,int y,int z,int n){
for(;y<=n-1;y++){
addZ(x,y,y+1,n);
}
}
/**
* 将第三个数加一,一直加到N-2,第二个数为第一个数加一,一直加到N-1,第三个数为第二个数加一,一直加到N
* @param x
* @param y
* @param z
* @param n
*/
private void addXYZ(int x,int y,int z,int n){
for(;x<=n-2;x++){
addXY(x,x+1,x+2,n);
}
}
}这是我写的,各位可以做个参考
实践出真知的