找出绳子中可见衣服的数量

时间:2017-01-31 13:07:49

标签: arrays algorithm dynamic

问题:衣服可见

一位女士最近聘请了一名女佣来照顾她的家务,这样她就可以集中精力开展新事业。作为日常工作的一部分,女仆每天清洗房子并洗衣服。

但是,绳子上的衣服干燥存在问题。由于绳子很小并且所有的衣服都不能正常展开,女仆会将一块布放在另一块布上。所以有些衣服被其他衣服覆盖 - 部分或完全覆盖。了解衣服悬挂的顺序和位置,确定从正面看时有多少衣服可见(部分或完全)。

考虑绳索的长度为N米,从0到N分为N个相等的部分。每个宽度为P的布料完全占据一个或多个部分。 (1< = P< = N& P是+ ve整数)。

(注意:出于此问题的目的,请忽略布料的其他尺寸) 输入规格 你的程序必须读取三个参数RopeLength,CountofClothes,ClothesPosition []在哪里 RopeLength是以米为单位的绳索长度(1&lt; = RopeLength&lt; = 10000) CountofClothes是放在绳子上的衣服数量(1&lt; = CountofClothes&lt; = 10000) ClothesPosition是一个阵列,给出了挂衣服的位置。布料位置由两个整数L和W描述,其中L表示布料悬挂的起始位置(0 <= L <= 10000),W是布料的宽度(1 <= W <= 10000)

接收输入的顺序是衣服放在绳子上的顺序。 输出规格 你的函数GetVisibleCount应该设置输出变量&#39; output1&#39;到完全或部分可见的衣服数量。

实施例 样本输入:

10:5:{{0,4},{6,3},{1,5},{6,4},{7,2}}

这里10是以米为单位的绳索长度。 5是挂在绳子上的衣服的数量。第一块布料从0开始,从0开始覆盖4个部分。第二块布料从6开始,从6开始覆盖3个部分,依此类推。 样本输出:

4

从正面看可见的衣服总数为4。

2 个答案:

答案 0 :(得分:1)

public class DryingClothes {

 public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    //System.out.println("Enter rope length");
    //int ropeLength = scan.nextInt();
    System.out.println("Enter number of clothes");
    int clothesCount = scan.nextInt();
    int[][] dimensions = new int[clothesCount][2];
    Map<Integer, Integer> visibility = new HashMap<>();
    for(int i=0;i<clothesCount;i++) {
        dimensions[i][0] = scan.nextInt();
        dimensions[i][1] = scan.nextInt();
        for(int j=dimensions[i][0];j<dimensions[i][0]+dimensions[i][1];j++) {
            visibility.put(j, i);   
        }
    }
    Set<Integer> clothesRemaining = new HashSet<>();
    for(int key : visibility.keySet()) {
        clothesRemaining.add(visibility.get(key));
    }
    System.out.println(clothesRemaining.size());
    scan.close();
  }
}

答案 1 :(得分:0)

  1. 我尝试实施的逻辑假设有两件衣服从同一个位置开始,一个的宽度大于另一个;那将覆盖一块布,因此布料将不可见。

  2. 如果假设有2个衣服,一个是位置1,另一个是位置2,但如果位置1的布料宽度大于位置2的布料宽度,那么在这种情况下,布料不会可见。

  3. 所以我们将循环n次,其中n =衣服的数量,每次我看到这个条件的可见衣服数量= n-1。

    但问题在于,程序的用户输入应按位置以增量方式进行。那是在2个位置之后,我可以为第3个或第4个位置输入,而不是第5个位置,然后是第3个位置。

    其次,我想保留一个变量作为类变量= numberofclothes,并且每当我满足上述条件时它就会减少 但我没有足够的测试数据来检查这一点。

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    
    public class AddScore : MonoBehaviour {
    
        void Start(){
            AddPScore (0);
        }
        void AddPScore(int storeResult){
            WWWForm form = new WWWForm ();
            form.AddField ("user", LoginSystem.userName);
            form.AddField ("score", storeResult);
            WWW w = new WWW ("https://nfx.000webhostapp.com/AddScore.php",form);
            StartCoroutine (receive (w));
            Debug.Log("funcionou");
        }
        IEnumerator receive(WWW w){
            yield return w;
            if (w.error == null) {
            }
        }
    
    }