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