nicuvlad76

Untitled

Jan 21st, 2021
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define N 51
  3. using namespace std;
  4. ifstream fin("cuvinte.in");
  5. ofstream fout("cuvinte.out");
  6. char c[N][N], st[N][N];
  7. int a[N],f[N][N],use[N],n,m,cuv;
  8. void Citire()
  9. {
  10. fin>>cuv>>n>>m;
  11. for(int i=1; i<=cuv; i++)
  12. fin>>c[i];
  13. }
  14. ///
  15. bool potpune(int k, int i, int j, int d)
  16. {
  17. if(d==1)///linie
  18. {
  19. int lg=strlen(c[k]);
  20. if(j+lg>m+1) return 0;
  21. for(int jj=0; c[k][jj]; jj++)
  22. if(c[k][jj]!=st[i][jj+j] && st[i][jj+j]!=0)
  23. return 0;
  24. }
  25. else///coloana
  26. {
  27. int lg=strlen(c[k]);
  28. if(i+lg>n+1)return 0;
  29. for(int ii=0; c[k][ii]; ii++)
  30. if(c[k][ii]!=st[ii+i][j] &&st[ii+i][j]!=0)
  31. return 0;
  32. }
  33. return 1;
  34. }
  35. void pune(int k, int i, int j, int d)
  36. {
  37. if(d==1)
  38. {
  39. for(int jj=0; c[k][jj]; jj++)
  40. st[i][jj+j]=c[k][jj], f[i][jj+j]++;
  41. }
  42. else
  43. {
  44. for(int ii=0; c[k][ii]; ii++)
  45. st[ii+i][j]=c[k][ii], f[ii+i][j]++;
  46. }
  47. }
  48.  
  49. void scoate(int k, int i, int j, int d)
  50. {
  51. if(d==1)
  52. {
  53. for(int jj=0; c[k][jj]; jj++)
  54. if(f[i][jj+j]==1)
  55. st[i][jj+j]=0,f[i][jj+j]--;
  56. else f[i][jj+j]--;
  57. }
  58. else
  59. {
  60. for(int ii=0; c[k][ii]; ii++)
  61. if(f[i+ii][j]==1)
  62. st[ii+i][j]=0,f[ii+i][j]--;
  63. else f[ii+i][j]--;
  64.  
  65. }
  66. }
  67. void afis()
  68. {
  69. for(int i=1; i<=n; i++)
  70. {
  71. for(int j=1; j<=m; j++)
  72. if(st[i][j]==0)fout<<"- ";
  73. else fout<<st[i][j]<<" ";
  74. fout<<'\n';
  75. }
  76. }
  77. void Back(int k)
  78. {
  79. for(int i=1; i<=n; i++)
  80. for(int j=1; j<=m; j++)
  81. for(int d=1; d<=2; d++)
  82. if(potpune(k,i,j,d))
  83. {
  84. pune(k,i,j,d);
  85. if(k==cuv)
  86. {
  87. afis();
  88. exit(0);
  89. }
  90. else Back(k+1);
  91. scoate(k,i,j,d);
  92. }
  93. }
  94. int main()
  95. {
  96. Citire();
  97. Back(1);
  98. return 0;
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment