주어진 크기의 숫자 1과 0을 저장할 수 있는 이진 배열과 정수 변수를 기본으로 제공합니다. 작업은 전체 배열이 강력해지도록 이진 배열의 다른 요소에 전력을 제공할 수 있는 최소 1을 계산하는 것입니다. 요소는 인접한 요소 또는 기본보다 짧은 거리에 있는 다른 요소에 전원을 공급할 수 있습니다.
이에 대한 다양한 입력 출력 시나리오를 살펴보겠습니다. -
안에 - 정수 arr[] ={1, 1, 0, 1, 1, 0, 1}, 정수 기본 =7
아웃 - 전체 어레이를 강력하게 만들기 위한 최소 1초는 다음과 같습니다. 1
설명 - 우리는 크기가 7인 이진 배열과 7의 기본 값이 제공되며, 이는 처음 만나는 숫자 1이 전체 배열에 전력을 공급할 수 있음을 의미합니다. 따라서 arr[1]의 숫자 1은 배열의 다른 모든 요소에 전력을 공급할 수 있습니다.
안에 - 정수 arr[] ={1, 1, 0, 1, 1, 0, 1}, 정수 기본 =3
아웃 - 전체 어레이를 강력하게 만들기 위한 최소 1초는 다음과 같습니다. 2
설명 - 크기가 7인 이진 배열과 base 값이 2로 주어졌을 때 처음 만나는 숫자 1이 배열의 다음 두 요소에 전력을 공급할 수 있음을 의미합니다. 따라서 arr[2]의 숫자 1은 배열의 다음 두 요소에 전력을 공급할 수 있고 arr[5]의 다른 숫자는 배열의 다음 두 요소에 전력을 공급하여 전체 배열을 강력하게 만들 수 있습니다.
안에 - 정수 arr[] ={1, 1, 0, 1, 1, 0, 1}, 정수 기본 =1
아웃 - 전체 어레이를 강력하게 만드는 것은 불가능합니다.
설명 - 우리는 크기가 7인 이진 배열과 1로 기본 값이 제공되며, 이는 처음 만나는 숫자 1이 배열의 다음 단일 요소에 전력을 제공할 수 있음을 의미합니다. 따라서 전체 어레이를 강력하게 만드는 것은 불가능합니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다 -
-
주어진 크기의 이진 배열과 정수 변수를 입력합니다. 예를 들어 base
-
배열의 크기를 계산하고 변수를 선언합니다. 예를 들어 정수 유형의 val
-
강력한 배열을 생성하는 데 필요한 최소 1을 반환하는 함수에 대한 호출과 함께 val을 설정하고 이것이 가능하지 않은 경우 오류 메시지를 추가로 표시하는 -1을 반환합니다.
-
함수 Lend_Power(int arr[], int size, int base)
내부-
바이너리 배열 크기의 정수형 값의 배열을 선언합니다.
-
임시 변수를 temp로 선언하고 -1로 설정하고 count하고 0으로 설정합니다.
-
배열의 크기까지 i에서 0까지 루프 FOR를 시작합니다. 루프 내에서 IF arr[i]가 1인지 확인한 다음 temp를 i로 설정하고 arr_2[i]를 temp로 설정
-
0에서 배열의 크기까지 FOR 루프를 시작하고 reset_base를 i + base - 1로, reset_size를 size - 1로 설정합니다. 변수 집합을 arr_2[min(reset_base, reset_size)]로 설정합니다.
-
IF set =-1 OR set + base <=i를 확인한 다음 -1을 반환
-
변수 'i'를 set + base로 설정합니다.
-
-
반환 횟수.
예시
#include<bits/stdc++.h> using namespace std; int Lend_Power(int arr[], int size, int base) { int arr_2[size]; int temp = -1; int count = 0; for(int i = 0; i < size; i++) { if(arr[i] == 1) { temp = i; } arr_2[i] = temp; } for(int i = 0; i < size;) { int reset_base = i + base - 1; int reset_size = size - 1; int set = arr_2[min(reset_base, reset_size)]; if(set == -1 || set + base <= i) { return -1; } i = set + base; count++; } return count; } int main() { int arr[] = {1, 1, 0, 1, 1, 0, 1}; int base = 2; int size = sizeof(arr) / sizeof(arr[0]); int val = Lend_Power(arr, size, base); if(val == -1) { cout<<"Impossible to make entire array powerful"; } else { cout<<"Minimum 1s to lend power to make whole array powerful are: "<<val; } return 0; }
출력
위의 코드를 실행하면 다음과 같은 Out
이 생성됩니다.Minimum 1s to lend power to make whole array powerful are: 3