Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.26 KB | None | 0 0
  1.  
  2. Conversație deschisă. 2 mesaje. Toate mesajele au fost citite.
  3.  
  4. Treci la conținut
  5. Se folosește Gmail cu cititoare de ecran
  6. Caută
  7.  
  8.  
  9. in:sent
  10.  
  11. Gmail
  12. SCRIE
  13. Etichete
  14. Mesaje primite (7.305)
  15. Cu stea
  16. Important
  17. Mesaje trimise
  18. Mesaje nefinalizate (1)
  19. Cercuri
  20. Mai multe
  21. Hangouts
  22.  
  23.  
  24.  
  25.  
  26. Mută în Mesaje primite Mai multe
  27. 3 din 40
  28.  
  29. Restrânge toate mesajele Printează-le pe toate Într-o fereastră nouă
  30. Exercitiul 2 Cazaciuc Valentin
  31.  
  32. Valentin White <valentinwhite2@gmail.com>
  33. Atașamente19 nov.
  34.  
  35. către Alina
  36. Am rezolvat si a 2 a problema. Din cauza ca esti obligat sa folosesti structura lor codul a ajuns sa arate foarte urat, dar face ceea ce cere in enunt.
  37. Secțiunea pentru atașamente
  38.  
  39. Valentin White <valentinwhite2@gmail.com>
  40. Atașamente21 nov.
  41.  
  42. către cosmin1999
  43.  
  44. Secțiunea pentru atașamente
  45.  
  46. Dă clic aici: Răspunde sau Redirecționează
  47. Se utilizează 0,43 GB (2%) din 15 GB
  48. Administrează
  49. Condiții - Confidențialitate
  50. Ultima activitate în cont: Acum 0 minute
  51. Detalii
  52. Persoane (2)
  53. Alina Voinea-Axinte
  54. Adaugă în cercuri
  55.  
  56. Afișează detaliile
  57.  
  58. #include <iostream>
  59. #include <algorithm>
  60. #include <string.h>
  61. using namespace std;
  62.  
  63. #define MAX_CARTONASE 1000
  64. #define MAX_SIR 15
  65.  
  66. int cnt,bst,cf;
  67.  
  68. typedef struct{
  69. char galben;
  70. union{
  71. char verde;
  72. char portocaliu[3];
  73. };
  74. }cartonas;
  75.  
  76. struct mutare{
  77. cartonas nod;
  78. struct mutare *urmator;
  79. };
  80.  
  81. typedef mutare* lista;
  82. int curentBst[10005], bkt[10005];
  83.  
  84. lista mutariJoc(cartonas vecCartonase[MAX_CARTONASE], char literaStart, char sirFinal[MAX_SIR]);
  85. void generareSir(cartonas v[], char curent[], char s[], int step, int n, int m);
  86.  
  87. int main()
  88. {
  89. cartonas v[MAX_CARTONASE];
  90. char s[MAX_SIR], temp;
  91. int n,i,m;
  92. cout<<"Introduceti numarul de cartonase ale fetei"<<'\n';
  93. cin>>n;
  94. cf = n;
  95. cout<<"Introduceti cartonasele fetei sub forma A BC"<<'\n';
  96. for(i = 1;i <= n;i++, cnt++){
  97. cin>>v[cnt].galben>>v[cnt].portocaliu;
  98. }
  99. cout<<"Introduceti numarul de cartonase ale baiatului"<<'\n';
  100. cin>>m;
  101. cout<<"Introduceti cartonasele baiatului sub forma E 0"<<'\n';
  102. for(i = 1;i <= m;i++, cnt++){
  103. cin>>v[cnt].galben>>v[cnt].verde;
  104. }
  105. cout<<"Introduceti sirul T sub forma 2403"<<'\n';
  106. cin>>s;
  107. cout<<"Introduceti caracterul de inceput sub forma A"<<'\n';
  108. cin>>temp;
  109. bst = 10000000;
  110. lista rezultat = mutariJoc(v, temp, s);
  111. if(rezultat == NULL){
  112. cout<<"Nu se poate obtine sirul T";
  113. }else{
  114. for(int i = 1;rezultat != NULL;rezultat = rezultat->urmator, i++){
  115. cout<<"Am folosit mutarea "<<rezultat->nod.galben<<' ';
  116. if(curentBst[i] >= cf){
  117. cout<<rezultat->nod.verde;
  118. }else{
  119. cout<<rezultat->nod.portocaliu;
  120. }
  121. cout<<'\n';
  122. }
  123. }
  124. return 0;
  125. }
  126.  
  127. lista mutariJoc(cartonas vecCartonase[MAX_CARTONASE], char literaStart, char sirFinal[MAX_SIR]){
  128. char curent[MAX_SIR + 5];
  129. curent[0] = literaStart;
  130. generareSir(vecCartonase, curent, sirFinal, 1, 1, strlen(sirFinal));
  131. if(bst == 10000000){
  132. return NULL;
  133. }
  134. lista ret = new mutare;
  135. ret->nod = vecCartonase[curentBst[1]];
  136. ret->urmator = NULL;
  137. lista p = ret;
  138. for(int i = 2;i <= bst;i++,p = p->urmator){
  139. lista ax = new mutare;
  140. ax->nod = vecCartonase[curentBst[i]];
  141. ax->urmator = NULL;
  142. p->urmator = ax;
  143. }
  144. return ret;
  145. }
  146.  
  147. bool corect(char curent[], char s[], int n, int m){
  148. if(n != m){
  149. return 0;
  150. }
  151. for(int i = 0;i < n;i++){
  152. if(curent[i] != s[i]){
  153. return 0;
  154. }
  155. }
  156. return 1;
  157. }
  158.  
  159. bool checkPrefix(char curent[], char s[], int n, int m){
  160. for(int i = 0;curent[i] >= '0' && curent[i] <= '9';i++){
  161. if(curent[i] != s[i]){
  162. return 0;
  163. }
  164. }
  165. return 1;
  166. }
  167.  
  168. void generareSir(cartonas v[], char curent[], char s[], int step, int n, int m){
  169. int i,j;
  170. for(i = 0;i < n;i++){
  171. for(j = 0;j < cnt;j++){
  172. if(curent[i] == v[j].galben){
  173. bkt[step] = j;
  174. if(j >= cf){
  175. char lit = curent[i];
  176. curent[i] = v[j].verde;
  177. if(checkPrefix(curent, s, n, m) == 0){
  178. curent[i] = lit;
  179. continue;
  180. }
  181. if(corect(curent, s, n, m) == 1 && step < bst){
  182. bst = step;
  183. for(int k = 1;k <= step;k++){
  184. curentBst[k] = bkt[k];
  185. }
  186. }else{
  187. generareSir(v, curent, s, step + 1, n, m);
  188. curent[i] = lit;
  189. }
  190. }else{
  191. char lit = curent[i];
  192. int length = strlen(v[j].portocaliu);
  193. if(n + length - 1 > 15){
  194. continue;
  195. }
  196. int l,k;
  197. for(l = 1, k = i + length;l <= n - i - 1;l++, k++){
  198. curent[k] = curent[k - length + 1];
  199. }
  200. for(l = 0;l < length;l++){
  201. curent[i+l] = v[j].portocaliu[l];
  202. }
  203. if(checkPrefix(curent, s, n, m) == 0){
  204. curent[i] = lit;
  205. for(l = 1, k = i + 1;l <= n - i - 1;l++, k++){
  206. curent[k] = curent[k + length + 1];
  207. }
  208. continue;
  209. }
  210. if(corect(curent, s, n, m) == 1 && step < bst){
  211. bst = step;
  212. for(k = 1;k <= step;k++){
  213. curentBst[k] = bkt[k];
  214. }
  215. }else{
  216. generareSir(v, curent, s, step + 1, n + length - 1, m);
  217. curent[i] = lit;
  218. for(l = 1, k = i + 1;l <= n - i - 1;l++, k++){
  219. curent[k] = curent[k + length + 1];
  220. }
  221. }
  222. }
  223. }
  224. }
  225. }
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement