使用C++使整個陣列強大的最小1s借力
我們得到一個二進位制陣列,它可以儲存任何給定大小的數字1和0,以及一個整數變數,例如base。任務是計算可以借力給二進位制陣列其他元素的最小1的數量,以使整個陣列變得強大。一個元素可以借力給其相鄰元素或距離小於base的任何其他元素。
讓我們看看這種情況下的各種輸入輸出場景:
輸入 − int arr[] = {1, 1, 0, 1, 1, 0, 1}, int base = 7
輸出 −使整個陣列強大的最小1s借力數量為:1
解釋 −我們得到一個大小為7的二進位制陣列和base值為7,這意味著遇到的第一個數字1可以借力給整個陣列。因此,arr[1]處的數字1可以借力給陣列的所有其他元素。
輸入 −int arr[] = {1, 1, 0, 1, 1, 0, 1}, int base = 3
輸出 −使整個陣列強大的最小1s借力數量為:2
解釋 −我們得到一個大小為7的二進位制陣列和base值為3,這意味著遇到的第一個數字1可以借力給陣列的接下來的兩個元素。因此,arr[2]處的數字1可以借力給陣列的接下來的兩個元素,而arr[5]處的另一個數字1可以借力給陣列的接下來的兩個元素,這使得整個陣列變得強大。
輸入 −int arr[] = {1, 1, 0, 1, 1, 0, 1}, int base = 1
輸出 −無法使整個陣列強大
解釋 −我們得到一個大小為7的二進位制陣列和base值為1,這意味著遇到的第一個數字1可以借力給陣列的下一個單個元素。因此,無法使整個陣列強大。
下面程式中使用的方法如下:
輸入任何給定大小的二進位制陣列和一個整數變數,例如base
計算陣列的大小並宣告一個整數型別的變數,例如val
將val設定為一個函式呼叫的結果,該函式將返回建立強大陣列所需的最小1的數量,如果不可能,則返回-1,這將進一步顯示錯誤訊息。
在函式Lend_Power(int arr[], int size, int base)內部
宣告一個整數型別值的陣列,其大小為二進位制陣列的大小。
宣告一個臨時變數temp並將其設定為-1,並宣告一個計數器變數count並將其設定為0。
從i=0開始迴圈到陣列的大小。在迴圈內部,檢查IF arr[i]等於1,則將temp設定為i並將arr_2[i]設定為temp
從0開始迴圈到陣列的大小,並將reset_base設定為i + base - 1,並將reset_size設定為size - 1。將變數set設定為arr_2[min(reset_base, reset_size)]。
檢查IF set = -1 OR set + base <= i,則返回-1
將變數'i'設定為set + base。
返回count。
示例
#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;
}輸出
如果執行以上程式碼,它將生成以下輸出
Minimum 1s to lend power to make whole array powerful are: 3
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP