Pagini recente » Cod sursa (job #2847753) | Cod sursa (job #1484031) | Cod sursa (job #487001) | Cod sursa (job #2601131) | Cod sursa (job #20969)
Cod sursa(job #20969)
#include <stdio.h>
#include <fstream.h>
#include <alloc.h>
#include <string.h>
struct cuv { char *lit,nrc; };
cuv a[250][130]; //250 130
char b[250][500],temp[255]; // 250 500 255
int n,k,i,j,l,m,s;
char c;
FILE *fin;
ofstream fout("prop.out");
void dorite(char li,char lj)
{
if (li>0)
{
dorite(li-1,lj-a[li-1][b[li][lj]-1].nrc);
if (li==n)
{ fout<<a[li-1][b[li][lj]-1].lit<<"\n";
return;
}
fout<<a[li-1][b[li][lj]-1].lit<<" ";
}
return;
}
int main()
{
fin = fopen("prop.in", "rt");
// CITIREA
fscanf(fin,"%d",&n);
fscanf(fin,"%d",&k);
fgetc(fin);
for (i=0;i<n;i++)
{ c='a';
l=-1;
while (c!='\n'&&!feof(fin))
{ c='a';
l++;
m=0;
a[i][l].lit=(char*)malloc(1);
while (1)
{
c=fgetc(fin);
if (c==' '||c=='\n'||feof(fin)) break;
strcpy(temp,a[i][l].lit);
free(a[i][l].lit);
a[i][l].lit=(char*)malloc(m+1);
strcpy(a[i][l].lit,temp);
a[i][l].lit[m++]=c;
a[i][l].nrc++;
a[i][l].lit[m]=NULL;
}
if (i!=n-1)
a[i][l].nrc++;
}
}
for (i=0;i<n;i++)
{ j=0;
while (a[i][j].nrc!=0)
{
if (i!=n-1)
a[i][j].lit[a[i][j].nrc-1]=NULL;
else
a[i][j].lit[a[i][j].nrc]=NULL;
j++;
}
}
for (i=1;i<=n;i++)
for (s=1;s<=k;s++)
{ j=0;
while (a[i-1][j].nrc!=0)
{ if (s-a[i-1][j].nrc>=0&&(b[i-1][s-a[i-1][j].nrc]>0||(i==1&&s==a[i-1][j].nrc)))
{ b[i][s]=j+1;
break;
}
j++;
}
}
if (b[n][k]==0)
fout<<0<<'\n';
else
{
dorite(n,k);
}
return 0;
}