Question 3
Problem : Sheldon Cooper and his beverage paradigm Sheldon Cooper, Leonard Hofstadter and Penny decide to go for drinks at Cheese cake factory. Sheldon proposes to make a game out of this. Sheldon proposes as follows,- To decide the amount of beverage they plan to consume, say X.
- Then order for a random number of different drinks, say {A, B, C, D, E, F} of quantities {a, b, c, d, e, f} respectively.
- If quantity of any three drinks add up to X then we'll have it else we'll return the order. E.g. If a + d + f = X then True else False
- Number of bottles N corresponding to different beverages and hence their sizes
- Next N lines, contain a positive integer corresponding to the size of the beverage
- Last line consists of an integer value, denoted by X above
Input Format:
- First line contains number of bottles ordered denoted by N
- Next N lines, contains a positive integer Ai, the size of the ith bottle
- Last line contains the quantity they intend to consume denoted by X in text above
Constraints: N >= 3 Ai > 0 1 <= i <= N X > 0 Sample Input and Output
SNo.
|
Input
|
Output
|
1
|
6 1 4 45 6 10 8 22
|
True
|
2
|
4 1 3 12 4 14
|
False
|
Explanation for sample input and output 1: The sum of 2nd, 5th and 6th beverage size is equal to 22. So the output will be True.
Explanation for sample input and output 2: Since no combination of given beverage sizes sum up to X i.e. 14, the output will be False
program code:(hint:set of all possible combinations with some condition)
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int i,n,q,l,k,j,*a=NULL;
clrscr();
printf("enter the no of entries: ");
scanf("%d",&n);
a=(int*)calloc(n,sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("enter the quantity to be consumed\n");
scanf("%d",&q);
for(i=0;i<n;i++)
{
if(a[i]>q)
{
a[i]=a[n-1];
n--;
i--;
}
}
for(i=0;i<n;i++)
{
k=a[i]; //selecting 1st element
for(j=i+1;k+a[j]<q&&j<n;j++)
{
k=k+a[j]; //2nd element decided
for(l=j+1;l<n;l++)
{
if(k+a[l]==q) //checking for 3rd element
{
printf("\tyes\n");
goto end;
}
}
k=k-a[j];
}
k=k-a[i];
}
printf("\tno");
end:getch();
exit(0);
}
No comments:
Post a Comment