Amazon Interview Question
Software Engineer / Developers#include <iostream>
using namespace std;
int main() {
int n , x, k;
cout << "Enter pascal triangle rows needed : " ;
cin >> n;
for (int i= 0; i< n; i++)
{
for (k =0; k< n-i; k++)
{
cout << " ";
}
x = 1;
for (k =0; k<=i; k++)
{
cout << x << " ";
x = (x*(i-k))/(k+1);
}
cout << endl;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <vector>
std::vector<unsigned int>pascal(unsigned int i)
{
if (i == 1) {
std::vector<unsigned int>v;
v.push_back(1);
return v;
}
if (i == 2) {
std::vector<unsigned int>v;
v.push_back(1);
v.push_back(1);
return v;
}
std::vector<unsigned int>p = pascal(i - 1);
std::vector<unsigned int>r;
r.push_back(1);
for (unsigned int j = 1; j < i - 1; j++) {
r.push_back(p[j - 1] + p[j]);
}
r.push_back(1);
return r;
}
int main(int argc, char **argv)
{
if (argc != 2) {
printf("usage: %s n\n", argv[0]);
exit(1);
}
unsigned int n = atoi(argv[1]);
for(unsigned int i = 1; i <= n; i++) {
std::vector<unsigned int>v = pascal(i);
for (unsigned int j = 0; j < i; j++) {
printf("%d ", v[j]);
}
printf("\n");
}
}
$ ./pascal-triangle 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
c# recursive solution:
private static void printPascal(int[] a, int level, int n)
{
int n1 = a.Length + 1;
int[] result = new int[n1];
if (level < n)
{
result[0] = 0;
result[n1 - 1] = 0;
for (int i = 1; i < (n1 - 2); i++)
{
result[i] = a[i - 1] + a[i];
}
level++;
Console.WriteLine();
for (int i = 1; i < result.Length - 2; i++)
{
Console.Write("\t"+result[i]);
}
printPascal(result, level, n);
}
}
here i took a[] = {0,1,0}
and level = -1
public class Node {
public Node next;
public int value;
public Node(int value) {
this.value = value;
}
}
public void pascalTriangle(int howManyLines) {
Node n = new Node(1);
Node start = n;
int count = 0;
while(count < howManyLines) {
count++;
n = start;
int prev = 0;
for(; n != null; n = n.next) {
System.out.print(String.format("%5s", n.value));
if (prev == 0) {
prev = n.value;
}
else {
int tmp = n.value;
n.value += prev;
prev = tmp;
}
if (n.next == null) {
n.next = new Node(1); break;
}
}
System.out.println();
}
}
- siva.sai.2020 March 11, 2011