<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    emu in blogjava

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

    Problem Statement
    ????
    A group of vertical blocks are placed densely one after another on the ground. The blocks each have a width of 1, but their heights may vary. For example, if the heights of the vertical blocks are given as {1,5,5,1,6,1}, the configuration would look like the following picture:


        ×
     ×× ×
     ×× ×
     ×× ×
     ×× ×
    ××××××
     
    Your task is to reproduce the exact shape of this structure using some number of non-intersecting rectangles. You will be given a int[] heights representing the heights of the vertical blocks from left to right. Return the minimal number of rectangles necessary to perform this task with the given configuration of blocks.
    Definition
    ????
    Class:
    BlockStructure
    Method:
    cover
    Parameters:
    int[]
    Returns:
    int
    Method signature:
    int cover(int[] heights)
    (be sure your method is public)
    ????

    Constraints
    -
    heights will have between 1 and 50 elements, inclusive.
    -
    Each element of heights will be between 1 and 1000, inclusive.
    Examples
    0)

    ????
    {1,5,5,1,6,1}
    Returns: 3
     
    We can use rectangles with sizes 6x1, 2x4 and 1x5.

        ×
     ×× ×
     ×× ×
     ×× ×
     ×× ×
    ××××××

    1)

    ????
    {2,2,2,4,4}
    Returns: 2
     
    We can use a 3x2 rectangle and a 2x4 rectangle.


       ××
       ××
    ×××××
    ×××××


    2)

    ????
    {6,6,6,6,6,6}
    Returns: 1
    The structure is a rectangle.
    3)

    ××××××
    ××××××
    ××××××
    ××××××
    ××××××
    ××××××


    ????
    {71,44,95,16,10,80,12,17,98,61}
    Returns: 10
    It's impossible to use less than 10 rectangles.
    4)

    ????
    {100,100,97,100,100,100,97,98,99,99}
    Returns: 5

    This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

    posted on 2005-12-20 10:28 emu 閱讀(1985) 評論(3)  編輯  收藏 所屬分類: google編程大賽模擬題及入圍賽真題

    評論

    # re: google中國編程挑戰賽入圍賽真題 -- BlockStructure(500分) 2005-12-21 14:06 emu
    我覺得這組解是干擾數據:

    {2,2,2,4,4}
    Returns: 2

    We can use a 3x2 rectangle and a 2x4 rectangle.



       ××
       ××
    ×××××
    ×××××


    如果題目提供的解是這樣:



       ××
       ××
    ×××××
    ×××××


    答案就容易找的多了。  回復  更多評論
      

    # re: google中國編程挑戰賽入圍賽真題 -- BlockStructure(500分) 2006-06-28 15:43 深藍色心情
    public static int count(int[] vs){
    Arrays.sort(vs) ;
    int min = vs[0] ;

    //把最低下一行刪掉。
    List list = new LinkedList() ;
    for(int i = 0 ; i < vs.length ; i++){
    if(min != vs[i]){
    int leftValue = vs[i] - min ;
    if(leftValue > 0 ){
    list.add(new Integer(leftValue)) ;
    }
    }
    }

    int maxBox = 1 ;

    //分組
    int step = 0 ;
    int maxSize = list.size() ;
    for(int i = 0 ; i < maxSize ; i++){
    step = ((Integer)list.get(i)).intValue() ;
    do{
    if(i < maxSize){
    int nextValue = -1000 ;
    if(i + 1 < maxSize){
    nextValue = ((Integer)list.get(i + 1)).intValue() ;
    }
    if(step == nextValue){
    i++ ;
    }else{
    maxBox++ ;
    break ;
    }
    }
    }while(i < maxSize) ;
    }

    return maxBox ;
    }


    public static void main(String[] args) {

    int[] vs = {1,5,5,1,6,1} ;

    System.out.println(TestPlay.count(vs)) ;

    System.out.println(TestPlay.count(new int[]{6,6,6,6,6,6})) ;

    System.out.println(TestPlay.count(new int[]{2,2,2,4,4})) ;

    System.out.println(TestPlay.count(new int[]{71,44,95,16,10,80,12,17,98,61})) ;
    }

    花了20分鐘才寫出來.......,幸虧沒去比賽。
    不能輸入<0的數,大家看看這樣子寫是對的嗎?
      回復  更多評論
      

    # re: google中國編程挑戰賽入圍賽真題 -- BlockStructure(500分) 2008-06-20 21:31 j
    看看我的是否更簡單些:
    #include"stdio.h"
    int make(int *T,int p,int dem,int *n,int *min)
    {
    *min=10000;
    *n=0;
    for(int i=p;i<dem;i++)
    if(T[i]>0)
    {
    int s=i;
    while(T[s]>0&&s<dem)
    {
    if(T[s]<*min)
    *min=T[s];
    (*n)++;
    s++;
    }
    return i;
    }
    return dem;
    }
    void Sub(int *T,int s,int n,int min)
    {
    for(int i=0;i<n;i++)
    T[s+i]-=min;
    }
    int main(int argc, char* argv[])
    { int p=0,n,m;
    int col[5]={3,3,6,6,6};
    while(true)
    {
    p=make(col,p,5,&n,&m);
    if(p==5)
    break;
    printf("width:%d,height:%d\n",n,m);
    Sub(col,p,n,m);
    }
    return 0;
    }
      回復  更多評論
      

    主站蜘蛛池模板: 97精品免费视频| 老司机免费午夜精品视频| 中文字幕永久免费视频| 亚洲欧洲精品成人久久奇米网| 亚洲av无码成人影院一区| 精品剧情v国产在免费线观看 | 亚洲乱码中文字幕综合| 成人福利在线观看免费视频| 亚洲国产激情一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 日韩av无码成人无码免费| 亚洲一级毛片免费看| 国产片AV片永久免费观看| 亚洲av无码国产综合专区 | 18禁成人网站免费观看| 91亚洲精品自在在线观看| 久久久久国色AV免费观看性色| 亚洲一区AV无码少妇电影| 免费a级毛片在线观看| 一个人看的免费视频www在线高清动漫 | 亚洲 暴爽 AV人人爽日日碰| 日本免费人成视频播放| 一区二区三区免费高清视频| 亚洲国产精品无码专区| 久久精品免费一区二区| 亚洲1区2区3区精华液| 国产偷窥女洗浴在线观看亚洲 | 黄色成人网站免费无码av| 男性gay黄免费网站| 久久九九亚洲精品| xxxxx免费视频| 国产成人精品久久亚洲高清不卡| 亚洲精品偷拍视频免费观看| 国产精品免费高清在线观看| 亚洲av无码不卡久久| 亚洲成AV人网址| 久久国产高潮流白浆免费观看| 亚洲国产成人久久一区二区三区 | 黄页免费的网站勿入免费直接进入| 亚洲欧美第一成人网站7777 | 亚洲中文字幕无码一久久区|