Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java의 최소 폭탄 수

<시간/>

여기서 문제 진술은 최소한의 폭탄 공격으로 건물의 방에서 깡패를 죽이는 것입니다. 방은 1에서 n으로 표시됩니다. 깡패는 첫 번째 폭격 공격에 부상을 입고 두 번째 공격에서 사망합니다. 방이 폭격을 당하면 괴한들은 건물에서 가장 가까운 방, 특히 이웃 방으로 돌진합니다. 건물에 있는 모든 깡패를 죽이기 위해 방을 폭파하는 데 필요한 폭격 횟수를 계산해야 합니다.

예를 들어 이해하자

입력 - 방의 정수 =3

출력 −필요한 총 폭격

4

2 1 3 2

설명 − 여기에서 필요한 폭탄의 최소 수는 4개입니다. 먼저 두 번째 방에 폭탄을 설치한다고 가정해 봅시다. 놈들이 자신을 구하기 위해 첫 번째 또는 세 번째 방으로 달려갈 것입니다. 그런 다음 우리는 첫 번째 방을 폭파합니다. 여기에서 두 번째 방의 공격으로 부상당한 깡패 중 일부가 죽고 첫 번째 방에 숨어 있던 괴한이 부상을 입고 가장 가까운 두 번째 방으로 돌진합니다. 이제 여기서 3번째 방을 폭격하자 2번째 방 폭격의 놈들이 숨어있었기 때문에 3번째 방의 폭격으로 죽고, 3번째 방에 숨어있던 놈들도 가장 가까운 방, 즉 2번째 방으로 달려가 마침내 폭파한다. 2번째 방은 3번째와 1번째 방의 부상당한 놈들을 죽이고 임무를 완료합니다.

입력 - 방의 정수 =2

출력 −필요한 총 폭격

3

2 1 2

설명 − 여기에서 필요한 폭탄의 최소 수는 3입니다. 먼저 두 번째 방에 폭탄을 설치한다고 가정해 봅시다. 깡패들이 자신을 구하기 위해 첫 번째 방으로 달려갈 것입니다. 그런 다음 우리는 첫 번째 방을 폭파합니다. 여기에서 두 번째 방의 공격으로 부상당한 goons 중 일부가 죽고 첫 번째 방에 숨어 있던 goon이 부상을 입고 가장 가까운 두 번째 방으로 돌진합니다. 이제 여기에서 두 번째 방을 폭파합니다. 숨어있던 1호실 폭탄 테러범들을 죽이고 임무를 완수합니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다 -

  • 먼저 사용자의 입력으로 방의 수를 가져옵니다.

  • 필요한 폭탄의 수는 (n+n/2)로 계산되어 나중에 인쇄됩니다.

  • 그런 다음 건물의 모든 짝수 방을 폭격하면 인쇄됩니다.

  • 그런 다음 건물의 이상한 방을 폭파하고 나중에 인쇄합니다.

  • 마지막으로 건물의 짝수 방을 다시 폭파하여 폭파 과정을 끝내고 그 결과를 사용자에게 인쇄합니다.

public class TP{
   public static void main(String[] args){
      int n = 8;
      System.out.println("Total Bombings required");
      System.out.println(n + n / 2);
      for (int i = 2; i <= n; i += 2)
         System.out.print(i + " ");
      for (int i = 1; i <= n; i += 2)
         System.out.print(i + " ");
      for (int i = 2; i <= n; i += 2)
         System.out.print(i + " ");
   }
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Total Bombings required
12
2 4 6 8 1 3 5 7 2 4 6 8