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
konstantin123 [22]
3 years ago
14

The Adjacent Coins Problem Published on 2017-08-30 Consider N coins aligned in a row. Each coin is showing either heads or tails

. The adjacency of these coins is the number of adjacent pairs of coins with the same side facing up. Write a program that given a non-empty zero-indexed array A consisting of N integers representing the coins, returns the maximum possible adjacency that can be obtained by reversing exactly one coin (that is, one of the coins must be reversed). Consecutive elements of array A represent consecutive coins in the row. Array A contains only 0s and/or 1s:

Computers and Technology
1 answer:
astraxan [27]3 years ago
3 0

Answer:

Here is the JAVA code:

public class Main{

public static int solution(int[] A) { //method that takes non-empty array A consisting of 0s and 1s

           int N = A.length; // number of 0s and 1s in array A

           int r = 0; //result of adjacency

           for (int i = 0; i < N - 1; i++;   )   { // iterates through A

               if (A[i] == A[i + 1])  //if i-th element of A is equal to (i+1)th element

                   r = r + 1;   }     //add 1 to the count of r

           if (r == N-1)   //for test cases like {1,1}

           {return r-1; }

           int max = 0; //to store maximum possible adjacency

           for (int i = 0; i <N; i++)   { //iterates through array

               int c = 0;

               if (i > 0)    { //starts from 1 and  covering the last

                   if (A[i-1] != A[i]) //checks if i-1 element of A is not equal to ith element of A

                       c = c + 1;    //adds 1 to counter variable

                   else

                      c = c - 1;   } //decrements c by 1

               if (i < N - 1)     {//starting with 0

                   if (A[i] != A[i + 1])  //checks if ith element of A is not equal to i+1th element of A

                       c = c + 1; //adds 1 to counter variable

                   else

                       c = c - 1;   }      //decrements c by 1        

               max = Math.max(max,c);   }  //finds the maximum of max and c

           return r + max;         } //returns result + maximum result

        public static void main(String[] args) {

   int[] A = {1, 1, 0, 1, 0, 0}; //sample array to test the method

   System.out.println(solution(A));} } //calls the method passing array to it

Explanation:

The program works as follows:

A[] = {1, 1, 0, 1, 0, 0}

N = A.length

N = 6

The A has the following elements:

A[0] =  1

A[1] = 1

A[2] = 0

A[3] = 1

A[4] = 0

A[5] = 0

Program iterates through array A using for loop. Loop variable i is initialized to 0

if condition if (A[i] == A[i + 1]) checks

if (A[0] == A[0 + 1])

A[0] =  1

A[0 + 1] = A[1] = 1

They both are 1 so they are equal

r = r + 1;  

Since the above if condition is true so 1 is added to the value of r Hence

r = 1

At each iteration of the loop the if condition checks whether the adjacent elements of A are equal. If true then r is incremented to 1 otherwise not.

So after all the iterations value of r = 2

if (r == N-1) evaluates to false because r=2 and N-1 = 5

So program moves to the statement:

for (int i = 0; i <N; i++)

This loop iterates through the array A

if (i > 0) condition checks if value of i is greater than 0. This evaluates to false and program control moves to statement:

if (i < N - 1) which makes if(0<5) This evaluates to true and program control moves to statement

if (A[i] != A[i + 1])  which means:

if (A[0] != A[0 + 1]) -> if (A[0] != A[1])

We know that

A[0] =  1

A[1] = 1

So this evaluates to false and else part is executed:

value of c is decremented to 1. So c=-1

max = Math.max(max,c) statement returns the max of max and c

max = 0

c = -1

So max = 0

value of i is incremented to 1 so i = 1

At next step:

if (i < N - 1) which makes if(1<5) This evaluates to true and program control moves to statement

if (A[i] != A[i + 1]) which means:

if (A[1] != A[1 + 1]) -> if (A[1] != A[2])

A[1] = 1

A[2] = 0

So the statement evaluates to true and following statement is executed

c = c + 1; The value of c is incremented to 1. So

c = -1 + 1

Hence

Hence c= 0, max = 0 and i = 2

next step:

if (i < N - 1) which makes if(2<5) This evaluates to true and program control moves to statement

if (A[i] != A[i + 1]) which means:

if (A[2] != A[2 + 1]) -> if (A[2] != A[3])

A[2] = 0

A[3] = 1

So the statement evaluates to true and following statement is executed

c = c + 1; The value of c is incremented to 1. So

c = 0 + 1

c = 1

Hence

The statement max = Math.max(max,c) returns the max of max and c

max = 0

c = 1

So max = 1

Hence  c= 1, max = 1 and i = 3

next step:

if (i < N - 1) which makes if(3<5) This evaluates to true and program control moves to statement

if (A[i] != A[i + 1]) which means:

if (A[3] != A[3 + 1]) -> if (A[3] != A[4])

A[3] = 1

A[4] = 0

So the statement evaluates to true and following statement is executed

c = c + 1; The value of c is incremented to 1. So

c = 1 + 1

c = 2

Hence

The statement max = Math.max(max,c) returns the max of max and c

max = 1

c = 2

So max = 2

Hence c= 2, max = 2 i = 4

next step:

if (i < N - 1) which makes if(4<5) This evaluates to true and program control moves to statement

if (A[i] != A[i + 1])  which means:

if (A[4] != A[4+ 1]) -> if (A[4] != A[5])

A[4] = 0

A[5] = 0

So this evaluates to false and else part is executed:

value of c is decremented to 1. So c=1

max = Math.max(max,c) statement returns the max of max and c

max = 2

c = 1

So max = 2

value of i is incremented to 1 so i = 5

next step:

if (i < N - 1) which makes if(5<5) This evaluates to false

if (i > 0) evaluates to true so following statement executes:

if (A[i-1] != A[i])

if (A[5-1] != A[5])

if (A[4] != A[5])

A[4] = 0

A[5] = 0

This statement evaluates to false so else part executes and value of c is decremented to 1

Hence

max = 2

c = 0

So max = 2

value of i is incremented to 1 so i = 6

The loop breaks because i <N evaluates to false.

Program control moves to the statement:

return r + max;

r = 2

max = 2

r + max = 2+2 = 4

So the output of the above program is:

4

You might be interested in
Brianna Watt, a consultant doing business as Watt Gives, wants a program to create an invoice for consulting services. Normally,
GREYUIT [131]

Answer:

The pseudocode is as follows:

Total_Hours = 0

Input Client_Name

Rate = 30.00

For days = 1 to 5

      Input Hours_worked

      Total_Hours = Total_Hours + Hours_Worked

Charges = Rate * Total_Hours

Print "Brianna Watt"

Print Client_Name

Print Total_Hours

Print Rate

Print Charges

Explanation:

This initializes the total hours worked to 0

Total_Hours = 0

This gets input for the client name

Input Client_Name

This initializes the standard rate to 30.00

Rate = 30.00

This iterates through the 5 days of work

For days = 1 to 5

This gets input for the hours worked each day

      Input Hours_worked

This calculates the total hours worked for the 5 days

      Total_Hours = Total_Hours + Hours_Worked

This calculates the total charges

Charges = Rate * Total_Hours

This prints the company name

Print "Brianna Watt"

This prints the client name

Print Client_Name

This prints the total hours worked

Print Total_Hours

This prints the standard rate

Print Rate

This prints the total charges

Print Charges

7 0
3 years ago
How do you start using the Internet?
fgiga [73]

Answer:

it's

D. open web browser

3 0
3 years ago
Read 2 more answers
HELP WHAT IS IT U GET BRAINLIEST
olga55 [171]
1.software used to manage databases 
5 0
4 years ago
Cuales son los multiplos de un byte
GalinKa [24]

Answer:

I hope this works for u

Explanation:

1 GIGABYTE = 1Gb = 1024 Mb = 1.000.000.000 bytes. 1 TERABYTE = 1Tb = 1024 Gb = 1 billon de bytes. 1 PETABYTE = 1Pb = 1024 Tb = Mill billones de bytes. 1 EXABYTE = 1 Eb = 1024 Pb = 1 trillon de bytes.

Can I have a brainliest..

Puedo tener un brainliest

Plz :3

8 0
3 years ago
What are the benefits and risks of a client-server network?
Tju [1.3M]

Answer:

Ermm... i don't really know but probably

the benefits can be: multi device connection and can be upgraded.

The disadvantages: The server is expensive i think, a special staff like  a network manager  is needed, and if any single part of the system fails a whole lot of disruption can come.

hope this helps!

8 0
3 years ago
Other questions:
  • Windows domain policy to disable windows 10 update
    7·1 answer
  • _ is the use of a collection of computers, often owned by many people or different organizations, to work in a coordinated manne
    6·1 answer
  • Critics of media consumption :
    15·1 answer
  • A Windows computer on your network is having issues resolving queries for a specific domain, but not other domains. Other comput
    15·1 answer
  • What will the following segment of code output if 11 is entered at the keyboard? int number; cin &gt;&gt; number; if (number &gt
    12·1 answer
  • Write a function solution that, given an integer N, returns the maximum possible
    8·1 answer
  • A character that <br>is raised and smaller above the baseline is called​
    6·1 answer
  • Software piracy can be described as
    10·1 answer
  • Many physical features of CPUs have been upgraded over the years. Below are some the features that latest CPUs can perform. Brie
    14·1 answer
  • Mary and Billy are moving away to college and both know in their hearts that they need to end their relationship. They move away
    5·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!