输入由多行组成。 第一行包含一个数字n,表示Pascal三角形中的行数将为n + 1。 第二行包含一个数字m,表示要在Pascal三角形上执行的事务数。每笔交易都在一个单独的行中给出。事务是以空格分隔的整数列表。每个列表中的第一个整数表示行号,比如R,列表中的其余整数表示行R中的值的索引。对于每个事务,您必须计算给定行R中给定系数的总和。 。 示例:输入将以以下格式给出:
5
3
3 1 2
5 1 1 1 4
4 2 3 2
应该怎么做才能存储过渡行的值
3 1 2
5 1 1 1 4
4 2 3 2
在单个数组变量下。因此它可以完全传递给函数。
答案 0 :(得分:1)
如果你制作这样的结构,你可以做你想做的事。您可以将结构传递给函数来计算每行的总和。
struct pascaltirangle
{
int size; //The no of lines
int* no_transactions; //To store no of transactions of each line
int** contents; //To store contents of each line. No of contents in line determined by transaction[i]
} dat;
//code to take input of size
dat.no_transactions=(int*)malloc(sizeof(int) * (dat.size+1));
//code to take no of transaction for each line
for(int i=0;i<=dat.size;i++)
contents[i]=malloc(sizeof(int)*dat.no_transaction[i]);
//code to take input for contents[i][j]
答案 1 :(得分:0)
它只是使用递归函数添加一行的所有事务。
#include <stdlib.h>
#include <stdio.h>
int add_transaction(int *contents,int size)
{
if(!size)
return 0;
return (*contents + add_transaction(contents+1,size-1));
}
void main()
{
int size; //The no of lines
int* no_transaction; //To store no of transactions of each line
int** contents; //To store contents of each line. No of contents in line determined by transaction[i]
int c1,c2;
printf("Give size of triangle :");
scanf("%d",&size);
no_transaction=(int*)malloc(sizeof(int) * (size+1));
contents=(int**)malloc(sizeof(int)*(size+1));
for(c1=0;c1<=size;c1++)
{
printf("\nGive no of transaction for line no %d :",c1+1);
scanf("%d",no_transaction+c1);
contents[c1]=(int*)malloc(sizeof(int)*no_transaction[c1]);
for(c2=0;c2<no_transaction[c1];c2++)
{
printf("\tFor line %d give transaction no %d :",c1+1,c2+1);
scanf("%d",contents[c1]+c2);
}
}
printf("\nThe sum of the series is :");
for(c1=0;c1<=size;c1++)
{
if(c1)
printf("+ %d ",add_transaction(contents[c1],no_transaction[c1]));
else
printf(" %d",add_transaction(contents[c1],no_transaction[c1]));
}
//Code to free the allocated memory.
}