1-10组成5对数,作为宽高构成5个矩形,这5个矩形又能组成一个正方形的情况有多少种情况?
分别是什么?我觉得对于5个矩形又能组成一个正方形的算法比较没有头绪,希望大家有什么好的想法,
分享一下

解决方案 »

  1.   

    这个问题,其实不难。逆向思维。动那个正方形入手。首先,不可能小于10,所以面积不能小于100。其次最大面积不可能大于190(假设那些5个矩形面积总和最大的情况,不考虑能否形成正方形)。其实说白了,这个正方形每一条边都有两个其他的矩形的便组成。而且边长必定等于大于10。先想到这里把。。该睡觉了。。呵呵,自己花个图看一下,几条边的关系罗列一些。。很快就能找出来的。。
    e.g.:
    a+b=10
    a+c+d=10
    e+f+g=10
    e+h=10
    .
    .
    .
    然后是他们是1。10的数字
      

  2.   

    我试了下可能比较笨 觉得不可能啊
    因为1-10的和是45  无法让长宽平分 怎么组成正方呢? 
    public class test2 {
    public static ArrayList data = new ArrayList(10);
    public static ArrayList boxs = new ArrayList(5);
    public static ArrayList height = new ArrayList(5);
    public static ArrayList width = new ArrayList(5);


    static {  
    for(int i=0;i<10;i++){
    data.add(new DataElement(i,false));
    }
    for(int i=0;i<5;i++){
    data.add(new box());
    }
    }

    static class DataElement{
    int data;
    boolean flag=false;
    DataElement(int data,boolean flag){
    this.data =data;
    this.flag = flag;
    }
    }

    static class box{
    int height;
    int width;
    boolean flag = false;
    box(){}
    box(int height,int width){
    this.height =height;
    this.width = width;
    }
    }



    public static void main(String arg[]){

    //求算法 让1-10中5个数相加等于另外5个
    //然后分别放在ArrayList height ArrayList width 里面
                      //任意对height width ArrayList 里的数进行组合就可以得到BOX
                      //可以扩展BOX得到面积 
    }

    }
      

  3.   

    wolaiye3(魔幻之光) ( ) 信誉:100  2006-04-12 21:51:00  得分: 0  
     
       呵呵,思路有了,四个矩形首尾相接围成一圈,中间是一个矩形,呵呵,算法明天在写.做个记号
      
     这样的话能确保找到所有的可能吗?我觉得可能会丢失
      

  4.   

    Flowing_air(凡飞)的方法感觉可行,试试先