1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
n200080 [17]
3 years ago
9

Given an array A of size N, and a number K. Task is to find out if it is possible to partition the array A into K contiguous sub

arrays such that the sum of elements within each of these subarrays is the same.Prerequisite : Count the number of ways to divide an array into three contiguous parts having equal sum
Computers and Technology
1 answer:
Dennis_Churaev [7]3 years ago
6 0

Answer: First lets solve the Prerequisite part

Lets say we have an input array of N numbers {3,2,5,0,5}. We have to  find number of ways to divide this array into 3 contiguous parts having equal sum. So the output for the above input array will be 2 as there are 2 ways to divide the array. One is (3,2),(5),(0,5) and the other is (3,2),(5,0),(5).

Following are the steps to achieve the above outcome.

  • Let p and q point to the index of array such that sum of array elements from 0 to p-1 is equal to sum of array elements from p to q which is equal to the sum of array elements from q+1 to N-1.  
  • If we see the array we can tell that the sum of 3 contiguous parts is 5. So the condition would be that sum of all array elements should be equal to 5 or sum of each contiguous part is equal to sum of all array elements divided by 5.
  • Now create 2 arrays prefix and postfix of size of input array. Index p of prefix array carries sum of input array elements from index 0 to index p. Index q of postfix array carries sum of input array elements from index p to index N-1
  • Next move through prefix array suppose at the index p of prefix array : value of prefix array == (sum of all input array elements)/5.
  • Search the postfix array for p index found above. Search it starting from p+2 index. Increment the count variable by 1 when the value of postfix array =(sum of all input array elements)/5 and push that index of postfix array into a new array. Use searching algorithm on new array to calculate number of values in postfix array.

Now lets solve the main task

We have an array A of size N and a number K. where A[]= {1,6,3,4,7} N=5 and K=3. We have to find if its possible to partition A into 3 contiguous subarrays such that sum of elements in each subarray is the same. It is possible in this example. Here we have 3 partitions (1,6),(3,4),(7) and sum of each of subarrays is same (1+6) (3+4) (7) which is 7.

Following are the steps to achieve the above outcome.

  • In order create K contiguous subarrays where each subarray has equal sum, first check the condition that sum of all elements in the given array should be divisible by K. Lets name another array as arrsum that will be the size of array A. Traverse A from first to  last index and keep adding current element of A with previous value in arrsum. Example A contains (1,6,3,4,7} and arrsum has {1,7,10,14,21}
  • If the above condition holds, now check the condition that each subarray or partition has equal sum. Suppose we represent sum1 to sum of all element in given array and sum2 of sum of each partition then: sum2 = sum2 / K.
  • Compare arrsum to subarray, begining from index 0 and when it becomes equal to sum2 this means that end of one subarray is reached. Lets say index q is pointing to that subarray.
  • Now from q+1 index find p index in which following condition holds: (arrsum[p] - arrsum[q])=sum2
  • Continue the above step untill K contigous subarrays are found. This loop will break if, at some index, sum2 of any subarray gets greater than required sum2 (as we know that every contiguous subarray should contain equal sum).

A easier function Partition for this task:

int Partition(int A[], int N, int k) // A arra y of size N and number k

{      int sum = 0;    int count = 0;  //variables initialization    

   for(int j = 0; j < N; j++)  //Loop that calculates sum of A

  sum = sum + A[j];        

  if(sum % k != 0) //checks condition that sum of all elements of A should be //divisible by k

   return 0;        

   sum = sum / k;  

   int sum2 = 0;  //represents sum of subarray

  for(int j = 0; j < N; j++) // Loop on subarrays

  {      sum2=sum2 + A[j];  

   if(sum2 == sum)    { //these lines locates subarrays and sum of elements //of subarrays should be equal

       sum2 = 0;  

       count++;  }  }  

/*calculate count of subarrays whose

sum is equal to (sum of complete array/ k.)

if count == k print Yes else print No*/

if(count == k)    

return 1;  

   else

   return 0;  }

You might be interested in
In this task, you will perform normalization on a crude table so that it could be stored as a relational database.
ryzh [129]

Answer:

Check the explanation

Explanation:

(1.) The functional dependencies based on assumptions are as follows:-

Trip determines which staff was there in the trip, the car used for the trip, the quantity of fuel used in the trip, the fill up time and the total paid of the trip.

Service station refers to its address

Car details consist of the details of license plate, odometer reading and the fuel type used in the car

fuel type and the fill up time will help to determine the cost of the fuel at that time

cost of the fuel and the quantity of fuel used will determine the total paid

From the above assumptions the functional dependencies are as follows:-

Trip ID -> Staff Name, Car Details, Service Station, Quantity, Fill Up Time, Total Paid

Service Station -> Station Address,

Car Details -> License Plate, Odometer reading, Fuel Type

Fuel Type, Fill up Time -> Cost per litre

Cost per Litre, Quantity -> Total Paid

(2.) Initially the relation is as follows:-

R (Trip ID, Staff Name, Car Details, License Plate, Odometer Reading, Service Station, Station Address, Fill up Time, Fuel type, Quantity, Cost per Litre, Total Paid)

For 1 NF there should not be composite attributes,in the above relation Staff Name and Station Address are composite attributes therefore it will be decomposed as follows:-

R (Trip ID, Staff First Name,Staff Last Name, Car Details, License Plate, Odometer Reading, Service Station, Street, City, State, Zip Code, Fill up Time, Fuel type, Quantity, Cost per Litre, Total Paid)

For 2 NF there should not be partial dependency that is non prime attribute should not dependent upon any 1 prime attribute of candidate key, since in the given relation there is only 1 candidate key which is only Trip ID, therefore the relation is already in 2 NF.

For 3 NF there should not be transitive dependency that is non prime attribute should not dependent upon the other non prime attribute, if it is present then the relation will be decomposed into sub relations, the given relation is not in 3 NF therefore it will be decomposed as follows:-

R1 (Trip ID, Staff First Name, Staff Last Name, Car Details, Service Station, Quantity, Fill up time, Total paid)

R2 (Service Station, Street, City, State, Zip Code)

R3 (Car Details, License Plate, Odometer reading, Fuel Type)

R4 (Fuel Type, Fill up Time, Cost per litre)

R5 (Cost per Litre, Quantity, Total Paid)

(3.) After the 3 NF we add the primary and foreign key constraints as follows:-

R1 (Trip ID, Staff First Name, Staff Last Name, Car Details, Service Station, Quantity, Fill up time, Total paid)

R2 (Service Station, Street, City, State, Zip Code)

R3 (Car Details, License Plate, Odometer reading, Fuel Type)

R4 (Fuel Type, Fill up Time, Cost per litre)

R5 (Cost per Litre, Quantity, Total Paid)

In the above relational schema the primary keys are represented with bold and foreign keys by italic

(4.) The ER diagram of the above relational schema using crow's foot notation are as shown in the attached image below:-

5 0
3 years ago
What is Interrupt?and give me information about Interruptstypes and processes and works?
nataly862011 [7]

Answer:

Interrupt is defined as, in computer system interrupts are the signal sent to the central processing unit by the external devices. The main function of interrupt is that, an operating system that provide multiprocessing and multitasking. The interrupt is a signal that causes the operating system to stop work on one processor and started work on another processor.

There are basically two type of interrupts:

  • Hardware interrupts - For the processor, if the signal is from external device and hardware is called hardware interrupts.
  • Software interrupts - The interrupt which is caused by the software instructions are called software interrupt.

6 0
3 years ago
What will be printed when the following code is executed? int y = 10; if ( y == 10) { int x = 30; x += y; } cout&lt;&lt;"x = ";
Alja [10]

Answer:

I don't know the answer

5 0
3 years ago
When a cellular telephone user places a call, the carrier transmits the caller’s voice as well as the voice of the person who is
slava [35]
To estimate the number of phone calls that will be placed net monday between 10:30 AM and noon and to generate a list of criminal suspects when given the telephone number of a known criminal
4 0
3 years ago
Read 2 more answers
When a function needs access to an original argument passed to it, for example in order to change its value, the argument needs
notsponge [240]

Answer:

See explanation

Explanation:

The question would be best answered if there are list of options.

However, the question is still answerable.

When there's a need to change the value of the argument passed into a function, what you do is that you first pass the argument into a parameter, then you change the value.

Take for instance, the following code segment:.

int changeArg(int n){

int newhange = n;

newhange++;

return newhange;

}

The above takes in n as the argument

Then it passes the value of n into a reference parameter, newchange

And lastly, the value is altered.

3 0
3 years ago
Other questions:
  • We have to calculate the percentage of marks obtained in three subjects (each out of 100) by student A and in four subjects (eac
    11·1 answer
  • It is generally safe to provide your social security number to
    7·2 answers
  • Is a router on the local network that is used to deliver packets to a remote network?
    15·1 answer
  • Use EBNF notation to describe the syntax of the following language constructs.
    6·1 answer
  • Well the last week has been kind of terrible...
    9·2 answers
  • What does =SUM(B2:B6) mean
    6·1 answer
  • Imagine you were going to use a dedicated workstation for an animation job rather than a personal PC or the all-purpose PCs you
    5·1 answer
  • ...This is totally a question
    6·1 answer
  • What is not a type of application software <br>​
    7·1 answer
  • Which access object cannot be used to enter or edit data
    13·2 answers
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!