TCS codevita:
PARENTHESIS GENERATION:
CWS RETURNING RESULTS:
COMBINATIONS IN C:
#include <stdio.h>
void printCombinations(int a[], int n, int selected[],int visited_count);
#define SIZE 10
int main() {
int arr[SIZE], n, i,selected[100],visited_count;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
printCombinations(arr, n,selected,visited_count);
return 0;
}
void printCombinations(int a[], int n, int selected[],int visited_count)
{
if(visited_count==n)
{
int i;
for(i=0;i<n;i++)
{
if(selected[i]==1)
{
printf("%d,",a[i]);
}}
printf("\n");
return;
}
selected[visited_count]=1;
printCombinations(a,n,selected,visited_count+1);
selected[visited_count]=0;
printCombinations(a,n,selected,visited_count+1);
}
*optimal stealing:
OPTIMUM STEALING PROBLEM:
FIND THE FIBONACCI NUMBER BY ENTERING VALUE:
#include <stdio.h>
int find_total_ways_recur(int curr_step, int n)
{
if(curr_step>n)
{
return 0;
}
if(curr_step==n)
{
return 1;
}
int total_ways = find_total_ways_recur(curr_step + 1, n) +
find_total_ways_recur(curr_step + 2, n);
return total_ways;
}
int find_total_ways_recur_wrap(int n)
{
return find_total_ways_recur(0,n);
}
int find_total_ways_recur_opt(int curr_step,int n,int results_cache[])
{
if(curr_step>n)
{
return 0;
}
if(curr_step==n)
{
return 1;
}
if(results_cache[curr_step]!=-1)
{
return results_cache[curr_step];
}
int total_ways = find_total_ways_recur_opt(curr_step + 1, n, results_cache) +
find_total_ways_recur_opt(curr_step + 2, n, results_cache);
results_cache[curr_step] = total_ways;
return total_ways;
}
int find_total_ways_recur_opt_wrap(int n)
{
int results_cache[n+1], i;
for(i = 0; i <= n; i++)
{
results_cache[i] = -1;
}
return find_total_ways_recur_opt(0 , n, results_cache);
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", find_total_ways_recur_opt_wrap(n));
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
int n, kind;
char s[MAX*2+1];
void print(char* dest, int left, int right)
{
if(left == n && right == n){
puts(dest);
++kind;
return;
}
if(left < n){
dest[left+right] = '(';
print(dest, left+1, right);
}
if(right < left){
dest[left+right] = ')';
print(dest, left, right+1);
}
}
int main()
{
scanf("%d", &n);
s[n<<1] = '\0';
kind = 0;
print(s, 0, 0);
return 0;
}
CWS RETURNING RESULTS:
#include<stdio.h>
int isSubsetSum(int set[], int n, int sum)
{
if (sum == 0)
return 1;
if (n == 0 && sum != 0)
return 0;
if (set[n-1] > sum)
return isSubsetSum(set, n-1, sum);
return isSubsetSum(set, n-1, sum) ||
isSubsetSum(set, n-1, sum-set[n-1]);
}
int main()
{
int set[20],sum,n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&set[i]);
scanf("%d",&sum);
if (isSubsetSum(set, n, sum) == 1)
printf("Combination Found = 1");
else
printf("Combination Found = 0");
return 0;
}
COMBINATIONS IN C:
#include <stdio.h>
void printCombinations(int a[], int n, int selected[],int visited_count);
#define SIZE 10
int main() {
int arr[SIZE], n, i,selected[100],visited_count;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
printCombinations(arr, n,selected,visited_count);
return 0;
}
void printCombinations(int a[], int n, int selected[],int visited_count)
{
if(visited_count==n)
{
int i;
for(i=0;i<n;i++)
{
if(selected[i]==1)
{
printf("%d,",a[i]);
}}
printf("\n");
return;
}
selected[visited_count]=1;
printCombinations(a,n,selected,visited_count+1);
selected[visited_count]=0;
printCombinations(a,n,selected,visited_count+1);
}
*optimal stealing:
OPTIMUM STEALING PROBLEM:
#include <stdio.h>
#define MAX_STALLS 50
#define MAX(a, b) (a>b) ? a : b
int max_stealing_opt(int house_values[],
int n,
int current_house,
int results_cache[])
{
if(current_house >= n)
{
return 0;
}
if(results_cache[current_house] != -1)
{
return results_cache[current_house];
}
int if_stolen = house_values[current_house] +
max_stealing_opt(house_values,
n,
current_house + 2,
results_cache);
int if_not_stolen = max_stealing_opt(house_values,
n,
current_house + 1,
results_cache);
results_cache[current_house] = MAX(if_stolen, if_not_stolen);
return results_cache[current_house];
}
int max_stealing_opt_wrapper(int house_values[], int n)
{
int results_cache[n], i;
for(i = 0; i < n; i++)
{
results_cache[i] = -1;
}
return max_stealing_opt(house_values, n, 0,results_cache);
}
int main() {
int n, house_values[MAX_STALLS], i;
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &house_values[i]);
}
printf("%d", max_stealing_opt_wrapper(house_values, n));
return 0;
}
*Staircase problem:#define MAX_STALLS 50
#define MAX(a, b) (a>b) ? a : b
int max_stealing_opt(int house_values[],
int n,
int current_house,
int results_cache[])
{
if(current_house >= n)
{
return 0;
}
if(results_cache[current_house] != -1)
{
return results_cache[current_house];
}
int if_stolen = house_values[current_house] +
max_stealing_opt(house_values,
n,
current_house + 2,
results_cache);
int if_not_stolen = max_stealing_opt(house_values,
n,
current_house + 1,
results_cache);
results_cache[current_house] = MAX(if_stolen, if_not_stolen);
return results_cache[current_house];
}
int max_stealing_opt_wrapper(int house_values[], int n)
{
int results_cache[n], i;
for(i = 0; i < n; i++)
{
results_cache[i] = -1;
}
return max_stealing_opt(house_values, n, 0,results_cache);
}
int main() {
int n, house_values[MAX_STALLS], i;
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &house_values[i]);
}
printf("%d", max_stealing_opt_wrapper(house_values, n));
return 0;
}
FIND THE FIBONACCI NUMBER BY ENTERING VALUE:
#include <stdio.h>
int find_total_ways_recur(int curr_step, int n)
{
if(curr_step>n)
{
return 0;
}
if(curr_step==n)
{
return 1;
}
int total_ways = find_total_ways_recur(curr_step + 1, n) +
find_total_ways_recur(curr_step + 2, n);
return total_ways;
}
int find_total_ways_recur_wrap(int n)
{
return find_total_ways_recur(0,n);
}
int find_total_ways_recur_opt(int curr_step,int n,int results_cache[])
{
if(curr_step>n)
{
return 0;
}
if(curr_step==n)
{
return 1;
}
if(results_cache[curr_step]!=-1)
{
return results_cache[curr_step];
}
int total_ways = find_total_ways_recur_opt(curr_step + 1, n, results_cache) +
find_total_ways_recur_opt(curr_step + 2, n, results_cache);
results_cache[curr_step] = total_ways;
return total_ways;
}
int find_total_ways_recur_opt_wrap(int n)
{
int results_cache[n+1], i;
for(i = 0; i <= n; i++)
{
results_cache[i] = -1;
}
return find_total_ways_recur_opt(0 , n, results_cache);
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", find_total_ways_recur_opt_wrap(n));
return 0;
}
Comments
Post a Comment