Advertisement
juanjo12x

UVA_232_Crosswords_Answers

Aug 4th, 2014
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <iostream>
  6. #include <cstdio>
  7. #include <algorithm>
  8. #include <cstring>
  9. #include <string>
  10. #include <cctype>
  11. #include <stack>
  12. #include <queue>
  13. #include <list>
  14. #include <vector>
  15. #include <map>
  16. #include <set>
  17. #include <sstream>
  18. #include <stdlib.h>
  19. #include <cmath>
  20. #define LL unsigned long long
  21. using namespace std;
  22. typedef struct reg{
  23.   int num;
  24.   char c;
  25. }Tcross;
  26. int r,c;
  27. Tcross table[200][200];
  28. bool elegible(int i,int j){
  29.  
  30.   if((table[i][j].c)=='*') return false;
  31.   if(i==0) return true;
  32.   if(j-1>=0){
  33.     if((table[i][j-1].c)=='*') return true;
  34.    
  35.   }
  36.   if(i-1>=0){
  37.     if((table[i-1][j].c)=='*') return true;
  38.   }
  39.   if(j-1<0 || i-1<0 ) return true;
  40.   return false;
  41. }
  42. void Imprimir(){
  43.     int k,l;
  44.     printf("Across\n");
  45.     /*primero procedemos a imprimir las horizontales*/
  46.     for(int i=0;i<r;i++){
  47.         for(int j=0;j<c;j++){
  48.             if(table[i][j].c=='*') continue;
  49.             else if(table[i][j].num!=0 && (j-1<0 || table[i][j-1].c=='*')){
  50.             /*mientras no sea * ,imprimo*/
  51.             k=i;l=j;
  52.             if (table[k][l].num<=9)printf("  %d.",table[k][l].num);
  53.             else if(table[k][l].num>9 && table[k][l].num<1000) printf(" %d.",table[k][l].num);
  54.             else printf("%d.",table[k][l].num);
  55.               while(l<c && table[k][l].c!='*' ){
  56.                 if (l+1<c && table[k][l+1].c!='*')printf("%c",table[k][l].c);
  57.                 else printf("%c\n",table[k][l].c);
  58.                l++;
  59.                if(c<=l) break;
  60.                }
  61.              
  62.             }else{
  63.                 continue;
  64.             }
  65.         }  
  66.     }
  67.     printf("Down\n");
  68.     /*procedemos a imprimir las verticales*/
  69.     for(int i=0;i<r;i++){
  70.         for(int j=0;j<c;j++){
  71.             if(table[i][j].c=='*') continue;
  72.             else if(table[i][j].num!=0 && (i-1<0 || table[i-1][j].c=='*')){
  73.             /*mientras no sea * ,imprimo*/
  74.             k=i;l=j;
  75.             if (table[k][l].num<=9)printf("  %d.",table[k][l].num);
  76.             else if(table[k][l].num>9 && table[k][l].num<1000) printf(" %d.",table[k][l].num);
  77.             else printf("%d.",table[k][l].num);
  78.               while(k<r && table[k][l].c!='*' ){
  79.                if (k+1<r && table[k+1][l].c!='*')printf("%c",table[k][l].c);
  80.                else printf("%c\n",table[k][l].c);
  81.                k++;
  82.                if(r<=k) break;
  83.                }
  84.                
  85.                
  86.             }else{
  87.                 continue;
  88.             }
  89.         }  
  90.     }
  91. }
  92. int main() {
  93.    
  94.     int cont;cont=0;int cont1;
  95.     while(scanf("%d",&r)){
  96.         cont++;
  97.         if(r==0) break; cont1=0;
  98.         if(cont>=2) printf("\n");
  99.         scanf("%d",&c);
  100.                 getchar();
  101.         for(int i=0;i<r;i++){
  102.             for(int j=0;j<c;j++){
  103.                 scanf("%c",&table[i][j].c);
  104.                 if(elegible(i,j)){
  105.                   cont1++;
  106.                   table[i][j].num=cont1;/*numero*/
  107.                 }else table[i][j].num=0;
  108.             }
  109.             getchar();
  110.         }
  111.         printf("puzzle #%d:\n",cont);
  112.         Imprimir();
  113.        
  114.     }
  115.     return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement