题目:将1块钱分1分,2分,5分硬币,分完之后,保证每种硬币至少有一个,问有多少种分法
我这个是用三重循环做的,谁能用两重循环搞定,这分就给谁了。。
class aa{
public static void main(String[] args) {
// TODO: Add your code here
int x,y,z=0;
int n=0;
for(x=1;x<2000;x++){
for(y=1;y<(10000-5*x)+1;y++){
for(z=1;z<(10000-2*y)+1;z++){
if(((5*x)+(2*y)+z)==10000){
n+=1;
System.out.println (x+"\t"+ y+"\t"+z);
}
}
}
}

System.out.println(n);
}}

解决方案 »

  1.   

    CSDN里没有高手了吗??
    班主在哪里,我要找他谈话。。
      

  2.   

    class MoneyGroup{
    public int getNumGroup(){
    int x,y,z=0;
    int n=0;
    for(x=1;x<20;x++){
    for(y=1;y<(100-5*x)+1;y++){
    for(z=1;z<(100-2*y)+1;z++){
    if(((5*x)+(2*y)+z)==100){
    n+=1;
    System.out.println (x+"\t"+ y+"\t"+z);
    }
    }
    }
    }
    return n;
    } public static void main(String[] args) {
    // TODO: Add your code here
    MoneyGroup m=new MoneyGroup();
    System.out.println (m.getNumGroup());
    }


    }
      

  3.   

    class aa{
    public static void main(String[] args) {
    // TODO: Add your code here
    int x,y,z=0;
    int n=0;
    for(x=1;x<2000;x++){
    for(y=1;y<(10000-5*x)+1;y++){
    n+=1;
    }
    }

    System.out.println(n);
    }}  这样不行吗?
      

  4.   

    老大,这个本来就是2重循环就可以了,因为你有一个总数.....三个数相加得一个总数第一个循环取了X,第二个循环取了Y
    还有必要历遍Z吗?
    只要剩下的是Z的整倍数就可以了嘛....
      

  5.   

    class cc{
    public static void main(String[] args) {
    // TODO: Add your code here
    int value = 1000;
    int x,y,z=0;
    int n=0;
    for(x=1;x<value/5;x++){
    //偶数
    if (x % 2== 0)
    {
    for (y=1; y< (value-5*x)/2 ; y++)
    {
    n+=1;
    }
    }
    else{
    for (y=1; y< (value-5*x-1)/2 ; y++)
    {
    n+=1;
    }
    }
    }

    System.out.println(n);
    }}
      

  6.   

    而且甚至不用判断就可以了....当你取一个5分的时候:
    47个2分+1个1分
    46个2分+3个1分
    ......1分是万能的....你只需要管取多少个5分和多少个2分就可以了class aa{
    public static void main(String[] args) {
    // TODO: Add your code here
    int x,y,z=0;
    int n=0;
    for(x=1;x<20;x++)
                     {
    for(y=1;y<(100-5*x)/2+1;y++)
                               {
    n+=1;
    }
    }

    System.out.println(n);
    }}
      

  7.   

    楼上代码有问题,还要考虑"保证每种硬币至少有一个"
    class bb{
    public static void main(String[] args) {
    // TODO: Add your code here
    int x,y,z=0;
    int n=0;
    for(x=1;x<200;x++){
    for(y=1;y<(1000-5*x)+1;y++){
    if( (1000-(5*x)-(2*y))>0){
    n+=1;
    //System.out.println (x+"\t"+ y+"\t"+z);
    }
    }
    }
    System.out.println(n);
    }
    }
      

  8.   

    oldbig615,哥们,你有QQ吗?欢迎加入我的群21198988
    这个分给你的,历害,佩服
      

  9.   

    t=1或2时,分别为两种解法~
    答案为461
    public class ComputeOneYuan {
    public static void main(String[] args) 
    {
    int n=0;
    int t=1;
    if(t==1)
    {
    for(int i=1;i<94;i++)
    for(int j=1;j<50;j++)
    if(((100-i-2*j)/5)>0
    &&(100-i-2*j)%5==0)
    n++;
    }
    if(t==2)
    {
    for(int i=1;i<20;i++)
    for(int j=1;j<50;j++)
    if((100-5*i-2*j)>0)
    n++;
    }
    System.out.println("解法有 "+n+"种");
    }}