问题:衣服可见
一位女士最近聘请了一名女佣来照顾她的家务,这样她就可以集中精力开展新事业。作为日常工作的一部分,女仆每天清洗房子并洗衣服。
但是,绳子上的衣服干燥存在问题。由于绳子很小并且所有的衣服都不能正常展开,女仆会将一块布放在另一块布上。所以有些衣服被其他衣服覆盖 - 部分或完全覆盖。了解衣服悬挂的顺序和位置,确定从正面看时有多少衣服可见(部分或完全)。
考虑绳索的长度为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。
答案 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)
我尝试实施的逻辑假设有两件衣服从同一个位置开始,一个的宽度大于另一个;那将覆盖一块布,因此布料将不可见。
如果假设有2个衣服,一个是位置1,另一个是位置2,但如果位置1的布料宽度大于位置2的布料宽度,那么在这种情况下,布料不会可见。
所以我们将循环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) {
}
}
}