fork download
  1. #include <stdio.h>
  2. #define MAX 20
  3. #define MAX_K 3
  4.  
  5. typedef struct Peca{
  6. int top[3];
  7. int bot[3];
  8. int left[3];
  9. int right[3];
  10. int pos[2];
  11. int up;
  12. }Peca;
  13.  
  14. int recurcao(int score, int a, int x, int y);
  15. int check(struct Peca *temp,int z);
  16. struct Peca* rotate(struct Peca *temp);
  17. struct Peca* createPeca( int a,int b,int c,int x,int y);
  18.  
  19.  
  20. int npecas=0;
  21. struct Peca *pecas[20];
  22. int input[20][4];
  23. int todas;
  24.  
  25.  
  26. int main(void) {
  27. int a, b, c;
  28. int res=0, restemp;
  29. struct Peca * testeR;
  30. int cnt=0;
  31. while(scanf("%d %d %d",&a, &b, &c ) != EOF){
  32. input[cnt][0]=a;
  33. input[cnt][1]=b;
  34. input[cnt][2]=c;
  35. input[cnt][3]=0;
  36.  
  37. cnt=cnt+1;
  38. }
  39.  
  40. printf("FDS");
  41.  
  42.  
  43. todas=cnt;
  44. int i,j;
  45.  
  46.  
  47. for(i=0;i<todas;i++){
  48. for(j=0;j<3;j++){
  49. printf("%d",input[i][j]);
  50. }
  51. printf("\n");
  52. }
  53.  
  54. // int temp = recurcao(0,2,1,1);
  55.  
  56.  
  57. for(i=0;i<todas;i++){
  58. restemp = recurcao(0,i,0,0);
  59. if (restemp>res){
  60. res=restemp;
  61. }
  62. }
  63. printf("%d\n", restemp);
  64. return 0;
  65.  
  66. }
  67.  
  68. int recurcao(int score, int a, int x, int y){
  69. int i, k;
  70. int scoreTemp,aux,aux1,aux2;
  71. input[a][4]=1;
  72. struct Peca *nova = createPeca(input[a][0],input[a][1],input[a][2],x,y);
  73.  
  74. printf("PECA NUMERO %d\n", a);
  75. //printf("top %d %d %d\n", nova->top[0], nova->top[1], nova->top[2]);
  76. /*printf("right %d %d %d\n", nova->right[0], nova->right[1], nova->right[2]);
  77. printf("left %d %d %d\n", nova->left[0], nova->left[1], nova->left[2]);
  78. printf("bot %d %d %\n", nova->bot[0], nova->bot[1], nova->bot[2]);
  79. printf("pos %d %d\n", nova->pos[0], nova->pos[1], nova->pos[2]);
  80. printf("up %d\n", nova->up);*/
  81.  
  82.  
  83. aux=check(nova,0);
  84. if(aux==-1){
  85. return -1;
  86. }
  87. /*
  88. pecas[npecas] = temp;
  89. npecas++;
  90. if(npecas == todas){
  91. return score;
  92. }
  93.  
  94. for(i=0;i<npecas;i++){
  95. if (pecas[i]->up){
  96. if (pecas[i]->bot[2]==0){
  97. aux2 = pecas[i]->bot[0];
  98. aux1 = pecas[i]->bot[1];
  99. for (k=0;k<todas;k++){
  100. if(input[k][2]==0){
  101. if(((input[k][0]==aux1) && (input[k][1]==aux2))
  102. || ((input[k][1]==aux1) && (input[k][2]==aux2))
  103. || ((input[k][2]==aux1) && (input[k][0]==aux2)) ){
  104. scoretemp = recurcao(k,pecas[i]->pos[0]-1,pecas[i]->pos[1]);
  105. if(scoreTemp>score){
  106. score=scoreTemp;
  107.  
  108. }
  109. }
  110. }
  111. }
  112. }
  113. if (pecas[i]->left[2]==0){
  114. aux2 = pecas[i]->left[0];
  115. aux1 = pecas[i]->left[1];
  116.  
  117. for(k=0;k<todas;k++){
  118. if(input[k][2]==0){
  119. if(((input[k][0]==aux1) && (input[k][1]==aux2)) ||
  120. ((input[k][1]==aux1) && (input[k][2]==aux2)) ||
  121. ((input[k][2]==aux1) && (input[k][0]==aux2))){
  122. score = recurcao(k,pecas[i]->pos[0], pecas[i]->pos[1]-1);
  123.  
  124. }
  125. }
  126. }
  127.  
  128. }
  129.  
  130. if(pecas[i]->right[2]==0){
  131. aux1 = pecas[i]->right[0];
  132. aux2 = pecas[i]->right[1];
  133.  
  134. for(k=0;k<todas;k++){
  135. if(input[k][2]==0){
  136. if(((input[k][0]==aux1) && (input[k][1]==aux2)) ||
  137. ((input[k][1]==aux1) && (input[k][2]==aux2)) ||
  138. ((input[k][2]==aux1) && (input[k][0]==aux2)) ){
  139. score = recurcao(k,pecas[i]->pos[0], pecas[i]->pos[1]+1);
  140. }
  141. }
  142. }
  143.  
  144.  
  145. }
  146. if (pecas[i]->top[2]==0){
  147.  
  148. aux1 = pecas[i]->top[0];
  149.  
  150. for(k=0;k<todas;k++){
  151. if(input[k][2]==0){
  152. if(input[k][0]==aux1){
  153. score = recurcao(k,pecas[i]->pos[0]+1, pecas[i]->pos[1]);
  154. }
  155. }
  156. }
  157. }
  158.  
  159. }
  160. else{
  161. if (pecas[i]->bot[2]==0){
  162. aux1 = pecas[i]->bot[0];
  163. for(k=0;k<todas;k++){
  164. if(input[k][2]==0){
  165. if(input[k][0]==aux1){
  166. score = recurcao(k,pecas[i]->pos[0]-1, pecas[i]->pos[1]);
  167. }
  168. }
  169. }
  170.  
  171. }
  172. if (pecas[i]->left[2]==0){
  173. aux2 = pecas[i]->left[0];
  174. aux1 = pecas[i]->left[1];
  175.  
  176. for(k=0;k<todas;k++){
  177. if(input[k][2]==0){
  178. if(((input[k][0]==aux1) && (input[k][1]==aux2)) ||
  179. ((input[k][1]==aux1) && (input[k][2]==aux2)) ||
  180. ((input[k][2]==aux1) && (input[k][0]==aux2))){
  181. score = recurcao(k,pecas[i]->pos[0], pecas[i]->pos[1]-1);
  182.  
  183. }
  184. }
  185. }
  186.  
  187. }
  188.  
  189. if(pecas[i]->right[2]==0){
  190. aux1 = pecas[i]->right[0];
  191. aux2 = pecas[i]->right[1];
  192.  
  193. for(k=0;k<todas;k++){
  194. if(input[k][2]==0){
  195. if(((input[k][0]==aux1) && (input[k][1]==aux2)) ||
  196. ((input[k][1]==aux1) && (input[k][2]==aux2)) ||
  197. ((input[k][2]==aux1) && (input[k][0]==aux2)) ){
  198. score = recurcao(k,pecas[i]->pos[0], pecas[i]->pos[1]+1);
  199. }
  200. }
  201. }
  202.  
  203.  
  204. }
  205. if (pecas[i]->top[2]==0){
  206.  
  207.  
  208. aux2 = pecas[i]->top[0];
  209. aux1 = pecas[i]->top[1];
  210.  
  211. for (k=0;k<todas;k++){
  212. if(input[k][2]==0){
  213. if(((input[k][0]==aux1) && (input[k][1]==aux2)) || ((input[k][1]==aux1) && (input[k][2]==aux2)) || ((input[k][2]==aux1) && (input[k][0]==aux2)) ){
  214. score = recurcao(k,pecas[i]->pos[0]+1,pecas[i]->pos[1]);
  215. }
  216. }
  217. }
  218. }
  219. }
  220. }
  221. input[a][4]=0;
  222. */
  223. //pecas[npecas].free; dar free a estutura da ultima peca
  224.  
  225. return score;
  226. }
  227.  
  228. int check(struct Peca *temp,int z){
  229.  
  230. int i;
  231. if(z==3)
  232. return 0;
  233.  
  234. if (temp->up){
  235. for(i=0;i<npecas;i++){
  236. if(((pecas[i]->pos[0])==(temp->pos[0]+1)) && ((pecas[i]->pos[1])==(temp->pos[1]))){
  237. if((temp->top[0])!=(pecas[i]->bot[0])){
  238. rotate(temp);
  239. return check(temp,z+1);
  240. }
  241. }/*
  242. if(((pecas[i]->pos[0]==temp->pos[0]-1) && (pecas[i]->pos[1]==temp->pos[1]))){
  243. if(((temp->bot[0])!=(pecas[i]->top[1])) || ((temp->bot[1])!=(pecas[i]->top[0]))){
  244. rotate(temp);
  245. return check(temp,z+1);
  246. }
  247. }
  248. if((pecas[i]->pos[0]==temp->pos[0]) && (pecas[i]->pos[1]==temp->pos[1]-1)){
  249. if(((temp->left[0])!=(pecas[i]->right[1])) || ((temp->left[1])!=(pecas[i]->right[0]))){
  250. rotate(temp);
  251. return check(temp,z+1);
  252. }
  253. }
  254. if((pecas[i]->pos[0]==temp->pos[0]) && (pecas[i]->pos[1]==temp->pos[1]+1)){
  255. if(((temp->right[0])!=(pecas[i]->left[1])) || ((temp->right[1])!=(pecas[i]->left[0]))){
  256. rotate(temp);
  257. return check(temp,z+1);
  258. }
  259. }
  260.  
  261. */}
  262. }/*else{
  263. for(i=0;i<npecas;i++){
  264. if(((pecas[i]->pos[0])==(temp->pos[0]+1)) && ((pecas[i]->pos[1])==(temp->pos[1]))){
  265. if((temp->top[0])!=(pecas[i]->bot[0])){
  266. //rotate(temp);
  267. return check(temp,z+1);
  268. }
  269. }
  270. if((pecas[i]->pos[0]==temp->pos[0]-1) && (pecas[i]->pos[1]==temp->pos[1])){
  271. if(((temp->bot[0])!=(pecas[i]->top[1])) || ((temp->bot[1])!=(pecas[i]->top[0]))){
  272. //rotate(temp);
  273. return check(temp,z+1);
  274. }
  275. }
  276. if((pecas[i]->pos[0]==temp->pos[0]) && (pecas[i]->pos[1]==temp->pos[1])-1){
  277. if(((temp->left[0])!=(pecas[i]->right[1])) || ((temp->left[1])!=(pecas[i]->right[0]))){
  278. //rotate(temp);
  279. return check(temp,z+1);
  280. }
  281. }
  282. if((pecas[i]->pos[0]==temp->pos[0]) && (pecas[i]->pos[1]==temp->pos[1])+1){
  283. if(((temp->right[0])!=(pecas[i]->left[1])) || ((temp->right[1])!=(pecas[i]->left[0]))){
  284. //rotate(temp);
  285. return check(temp,z+1);
  286. }
  287. }
  288. }
  289.  
  290. }*/
  291. return 0;
  292. }
  293.  
  294. struct Peca * rotate(struct Peca *temp){
  295.  
  296. int aux[3];
  297. struct Peca *nova;
  298. if(temp->up){
  299. aux[0] = temp->left[0];
  300. aux[1] = temp->right[0];
  301. aux[2] = temp->bot[0];
  302. //nova = createPeca(aux[0],aux[1],aux[2],temp->pos[0],temp->pos[1]);
  303. }else{
  304. aux[0] = temp->top[0];
  305. aux[1] = temp->right[0];
  306. aux[2] = temp->left[0];
  307. //nova = createPeca(aux[0],aux[1],aux[2],temp->pos[0],temp->pos[1]);
  308. }
  309. return nova;
  310.  
  311. }
  312.  
  313.  
  314. struct Peca* createPeca( int a,int b,int c,int x,int y){
  315. printf("a: %d b: %d c:%d d: %d %d\n",a,b,c,x,y);
  316. struct Peca* temp;
  317. if((x+y)%2==0){
  318. temp->up = 1;
  319.  
  320. temp->bot[0] = a;
  321. printf("%d " ,temp->bot[0]);
  322. temp->bot[1] = b;
  323. printf("%d " ,temp->bot[1]);
  324. temp->bot[2] = 0;
  325. printf("%d\n" ,temp->bot[2]);
  326. temp->left[0] = b;
  327. printf("%d" ,temp->left[0]);
  328. temp->left[1] = c;
  329. printf("%d" ,temp->left[1]);
  330. temp->left[2] = 0;
  331. printf("%d\n" ,temp->left[2]);
  332. temp->right[0] = c;
  333. printf("%d" ,temp->right[0]);
  334. temp->right[1] = a;
  335. printf("%d" ,temp->right[1]);
  336. temp->right[2] = 0;
  337. printf("%d\n" ,temp->right[2]);
  338. temp->top[0] = c;
  339. printf("%d\n", temp->top[0]);
  340. }else{
  341. temp->up = 0;
  342. //("%d\n",temp->up);
  343. temp->left[0] = a;
  344. temp->left[1] = b;
  345. temp->left[2] = 0;
  346. temp->top[0] = b;
  347. temp->top[1] = c;
  348. temp->top[2] = 0;
  349. temp->right[0] = c;
  350. temp->right[1] = a;
  351. temp->right[2] = 0;
  352. temp->bot[0] = c;
  353. }
  354. temp->pos[0] = x;
  355. printf("%d\n" ,temp->pos[0]);
  356. temp->pos[1] = y;
  357. printf("%d\n" ,temp->pos[1]);
  358.  
  359. return temp;
  360.  
  361. }
  362.  
  363.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#include <stdio.h>
^
Main.java:1: error: class, interface, or enum expected
#include <stdio.h>
         ^
Main.java:2: error: illegal character: '#'
#define MAX 20
^
Main.java:3: error: illegal character: '#'
#define MAX_K 3
^
Main.java:7: error: class, interface, or enum expected
 	int bot[3];
 	^
Main.java:8: error: class, interface, or enum expected
 	int left[3];
 	^
Main.java:9: error: class, interface, or enum expected
 	int right[3];
 	^
Main.java:10: error: class, interface, or enum expected
 	int pos[2]; 	
 	^
Main.java:11: error: class, interface, or enum expected
	int up;		
	^
Main.java:12: error: class, interface, or enum expected
}Peca;
^
Main.java:14: error: class, interface, or enum expected
int recurcao(int score, int a, int x, int y);
^
Main.java:15: error: class, interface, or enum expected
int check(struct Peca *temp,int z);
^
Main.java:16: error: class, interface, or enum expected
struct Peca* rotate(struct Peca *temp);
^
Main.java:17: error: class, interface, or enum expected
struct Peca* createPeca( int a,int b,int c,int x,int y);
^
Main.java:20: error: class, interface, or enum expected
int npecas=0; 
^
Main.java:21: error: class, interface, or enum expected
struct Peca *pecas[20];
^
Main.java:22: error: class, interface, or enum expected
int input[20][4];
^
Main.java:23: error: class, interface, or enum expected
int todas;
^
Main.java:26: error: class, interface, or enum expected
int main(void) {
^
Main.java:28: error: class, interface, or enum expected
	int res=0, restemp;
	^
Main.java:29: error: class, interface, or enum expected
	struct Peca * testeR;
	^
Main.java:30: error: class, interface, or enum expected
	int cnt=0;
	^
Main.java:31: error: class, interface, or enum expected
	while(scanf("%d %d %d",&a, &b, &c ) != EOF){
	^
Main.java:33: error: class, interface, or enum expected
		input[cnt][1]=b;
		^
Main.java:34: error: class, interface, or enum expected
		input[cnt][2]=c;
		^
Main.java:35: error: class, interface, or enum expected
		input[cnt][3]=0;
		^
Main.java:37: error: class, interface, or enum expected
		cnt=cnt+1;
		^
Main.java:38: error: class, interface, or enum expected
	}
	^
Main.java:43: error: class, interface, or enum expected
	todas=cnt;
	^
Main.java:44: error: class, interface, or enum expected
	int i,j;
	^
Main.java:47: error: class, interface, or enum expected
	for(i=0;i<todas;i++){
	^
Main.java:47: error: class, interface, or enum expected
	for(i=0;i<todas;i++){
	        ^
Main.java:47: error: class, interface, or enum expected
	for(i=0;i<todas;i++){
	                ^
Main.java:48: error: class, interface, or enum expected
		for(j=0;j<3;j++){
		        ^
Main.java:48: error: class, interface, or enum expected
		for(j=0;j<3;j++){
		            ^
Main.java:50: error: class, interface, or enum expected
		}
		^
Main.java:52: error: class, interface, or enum expected
	}
	^
Main.java:57: error: class, interface, or enum expected
	for(i=0;i<todas;i++){
	        ^
Main.java:57: error: class, interface, or enum expected
	for(i=0;i<todas;i++){
	                ^
Main.java:59: error: class, interface, or enum expected
		if (restemp>res){
		^
Main.java:61: error: class, interface, or enum expected
		}
		^
Main.java:64: error: class, interface, or enum expected
	return 0;
	^
Main.java:66: error: class, interface, or enum expected
}
^
Main.java:70: error: class, interface, or enum expected
	int scoreTemp,aux,aux1,aux2;
	^
Main.java:71: error: class, interface, or enum expected
	input[a][4]=1;
	^
Main.java:72: error: class, interface, or enum expected
	struct Peca *nova = createPeca(input[a][0],input[a][1],input[a][2],x,y);
	^
Main.java:74: error: class, interface, or enum expected
	printf("PECA NUMERO %d\n", a);
	^
Main.java:83: error: class, interface, or enum expected
	aux=check(nova,0);
	^
Main.java:84: error: class, interface, or enum expected
	if(aux==-1){
	^
Main.java:86: error: class, interface, or enum expected
	}
	^
Main.java:226: error: class, interface, or enum expected
}
^
Main.java:231: error: class, interface, or enum expected
	if(z==3)
	^
Main.java:234: error: class, interface, or enum expected
	if (temp->up){ 
	^
Main.java:235: error: class, interface, or enum expected
		for(i=0;i<npecas;i++){
		        ^
Main.java:235: error: class, interface, or enum expected
		for(i=0;i<npecas;i++){
		                 ^
Main.java:239: error: class, interface, or enum expected
					return check(temp,z+1);
					^
Main.java:240: error: class, interface, or enum expected
				}
				^
Main.java:292: error: class, interface, or enum expected
}
^
Main.java:297: error: class, interface, or enum expected
	struct Peca *nova;
	^
Main.java:298: error: class, interface, or enum expected
	if(temp->up){
	^
Main.java:300: error: class, interface, or enum expected
		aux[1] = temp->right[0];
		^
Main.java:301: error: class, interface, or enum expected
		aux[2] = temp->bot[0];
		^
Main.java:303: error: class, interface, or enum expected
	}else{
	^
Main.java:305: error: class, interface, or enum expected
		aux[1] = temp->right[0];
		^
Main.java:306: error: class, interface, or enum expected
		aux[2] = temp->left[0];
		^
Main.java:308: error: class, interface, or enum expected
	}
	^
Main.java:311: error: class, interface, or enum expected
}
^
Main.java:316: error: class, interface, or enum expected
	struct Peca* temp;
	^
Main.java:317: error: class, interface, or enum expected
	if((x+y)%2==0){
	^
Main.java:320: error: class, interface, or enum expected
		temp->bot[0] = a;
		^
Main.java:321: error: class, interface, or enum expected
		printf("%d " ,temp->bot[0]);
		^
Main.java:322: error: class, interface, or enum expected
		temp->bot[1] = b;
		^
Main.java:323: error: class, interface, or enum expected
		printf("%d " ,temp->bot[1]);
		^
Main.java:324: error: class, interface, or enum expected
		temp->bot[2] = 0;
		^
Main.java:325: error: class, interface, or enum expected
		printf("%d\n" ,temp->bot[2]);
		^
Main.java:326: error: class, interface, or enum expected
		temp->left[0] = b; 
		^
Main.java:327: error: class, interface, or enum expected
		printf("%d" ,temp->left[0]);
		^
Main.java:328: error: class, interface, or enum expected
		temp->left[1] = c;
		^
Main.java:329: error: class, interface, or enum expected
		printf("%d" ,temp->left[1]);
		^
Main.java:330: error: class, interface, or enum expected
		temp->left[2] = 0;
		^
Main.java:331: error: class, interface, or enum expected
		printf("%d\n" ,temp->left[2]);
		^
Main.java:332: error: class, interface, or enum expected
		temp->right[0] = c;
		^
Main.java:333: error: class, interface, or enum expected
		printf("%d" ,temp->right[0]);
		^
Main.java:334: error: class, interface, or enum expected
		temp->right[1] = a;
		^
Main.java:335: error: class, interface, or enum expected
		printf("%d" ,temp->right[1]);
		^
Main.java:336: error: class, interface, or enum expected
		temp->right[2] =  0;
		^
Main.java:337: error: class, interface, or enum expected
		printf("%d\n" ,temp->right[2]);
		^
Main.java:338: error: class, interface, or enum expected
		temp->top[0] = c; 
		^
Main.java:339: error: class, interface, or enum expected
		printf("%d\n",	temp->top[0]);
		^
Main.java:340: error: class, interface, or enum expected
	}else{
	^
Main.java:343: error: class, interface, or enum expected
		temp->left[0] = a;	
		^
Main.java:344: error: class, interface, or enum expected
		temp->left[1] = b;	
		^
Main.java:345: error: class, interface, or enum expected
		temp->left[2] = 0;
		^
Main.java:346: error: class, interface, or enum expected
		temp->top[0] =  b; 
		^
Main.java:347: error: class, interface, or enum expected
		temp->top[1] =  c; 
		^
Main.java:348: error: class, interface, or enum expected
		temp->top[2] =  0; 
		^
Main.java:349: error: class, interface, or enum expected
		temp->right[0] = c;
		^
Main.java:350: error: class, interface, or enum expected
		temp->right[1] = a;
		^
Main.java:351: error: class, interface, or enum expected
		temp->right[2] =  0; 
		^
Main.java:352: error: class, interface, or enum expected
		temp->bot[0] = c;
		^
100 errors
stdout
Standard output is empty