Упражнения на C: Верните true, если массив может быть разбит в таком положении, что сумма левой части расщепления равна сумме правой стороны
C Array: Упражнение-99 с раствором
Напишите программу на C, чтобы она возвращала true, если массив может быть разбит в таком положении, что сумма левой части расщепления равна сумме правой стороны.
Пример решения:
Код C:
#include<stdio.h>
# include <stdbool.h>
bool canBalance(int arr1[],int n)
{
int l=n;
for(int i = 0; i < l; i++)
{
int rhs = 0, lhs = 0;
for(int k = 0; k < l; k++)
{
if(k > i)
{
lhs += arr1[k];
}
else
{
rhs += arr1[k];
}
}
if(rhs == lhs)
{
return true;
}
}
return false;
}
int main()
{
int arr1[] ={1, 3, 3, 8, 4, 3, 2, 3, 3};
int arr_size = sizeof(arr1)/sizeof(arr1[0]);
int i;
bool bl;
//------------- print original array ------------------
printf("The given array is : ");
for(i = 0; i < arr_size; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
//------------------------------------------------------
bl=canBalance(arr1, arr_size);
if (bl==true)
printf("The array can be split in a position where the sum of both side are equal. ");
else
printf("The array can not be split at any position where the sum of both side are equal. ");
return 0;
}
Пример вывода:
Данный массив: 1 3 3 8 4 3 2 3 3 Массив можно разбить на позицию, в которой сумма обеих сторон равна.
Блок - схема:
Редактор кода программирования C:
Улучшите этот пример решения и опубликуйте свой код через Disqus.
Предыдущий: Напишите программу на C, которая будет возвращать самый большой диапазон, найденный в крайнем левом и крайнем правом появлениях одного и того же значения (значения включительно) в данном массиве.
Далее: Напишите программу на C, которая будет возвращать количество скоплений (ряд из 2 или более смежных элементов с одинаковым значением) в данном массиве.
Новый контент: Composer: менеджер зависимостей для PHP , R программирования