免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1617 | 回复: 0
打印 上一主题 下一主题

[C] Farm Irrigation ACM(错误) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-11 11:06 |只看该作者 |倒序浏览

  1. #include <stdio.h>
  2. #include <string.h>
  3. typedef  struct land
  4. {
  5.         int up;
  6.         int down;
  7.         int left;
  8.         int right;
  9. }lands;


  10. int max(int i,int m,int j ,int b[][50])
  11. {
  12.                         int sss;
  13.                         int q,p;

  14.                
  15.                                                 sss=0;
  16.                                                 for(q=0;q<=i-1;q++)
  17.                                                 for(p=0;p<m;p++)
  18.                                                 {
  19.                                                        
  20.                                                         if(b[q][p]>=sss)
  21.                                                         {
  22.                                                                 sss=b[q][p];
  23.                        
  24.                                                         }
  25.                                                 }
  26.                                                 for(p=0;p<=j;p++)
  27.                                                 {
  28.                                                                 if(b[i][p]>=sss)
  29.                                                         {
  30.                                                                 sss=b[i][p];
  31.                                                         }
  32.                                                
  33.                                                 }
  34.         return sss;

  35. }

  36. void main()
  37. {
  38.         lands lan[11]={{1,0,1,0},{1,0,0,1},{0,1,1,0},{0,1,0,1},{1,1,0,0},{0,0,1,1},{1,0,1,1},{1,1,1,0},{0,1,1,1},{1,1,0,1},{1,1,1,1}};
  39.          
  40.         int num,n,m,i,j,k,p;
  41.         char c[100][100],c1;
  42.         while(1)
  43.         {     
  44.                 lands a[50][50]={0,0,0,0};
  45.                  int b[50][50]={0};

  46.                 scanf("%d %d",&n,&m);
  47.                 num=0;
  48.                 if(n<0||m<0)
  49.                         break;

  50.                 for(i=0;i<n;i++)
  51.                 {                scanf("%s",c[i]);
  52.                                 k=strlen(c[i]);
  53.                        
  54.                         for(j=0;j<k;j++)
  55.                         {       
  56.                        
  57.                                 switch(c[i][j])
  58.                                 {
  59.                                         case 'A': a[i][j]=lan[0];break;
  60.                                         case 'B': a[i][j]=lan[1];break;
  61.                                         case 'C': a[i][j]=lan[2];break;
  62.                                         case 'D': a[i][j]=lan[3];break;
  63.                                         case 'E': a[i][j]=lan[4];break;
  64.                                         case 'F': a[i][j]=lan[5];break;
  65.                                         case 'G': a[i][j]=lan[6];break;
  66.                                         case 'H': a[i][j]=lan[7];break;
  67.                                         case 'I': a[i][j]=lan[8];break;
  68.                                         case 'J': a[i][j]=lan[9];break;
  69.                                         case 'K': a[i][j]=lan[10];break;
  70.                                        
  71.                                 }

  72.                                
  73.                        
  74.                         }
  75.                 }


  76.                 for(i=0;i<n;i++)
  77.                         for(j=0;j<m;j++)
  78.                         {       

  79.                                 if(i==0&&j==0)
  80.                                 {       
  81.                                         b[i][j]=1;
  82.                                        
  83.                                 }
  84.                                 else if(j==0&&i!=0)
  85.                                 {
  86.                                         if(a[i][j].up==1&&a[i-1][j].down==1)
  87.                                                 b[i][j]=b[i-1][j];
  88.                                         else
  89.                                         {
  90.                                                 b[i][j]=max( i, m, j,b)+1;
  91.                                         }
  92.                                
  93.                                 }
  94.                                 else if(i==0&&j!=0)
  95.                                 {               
  96.                                         if(a[i][j].left==1&&a[i][j-1].right==1)
  97.                                                 b[i][j]=b[i][j-1];
  98.                                         else
  99.                                        
  100.                                                 b[i][j]=max(i,m,j,b)+1;
  101.                                
  102.                                 }
  103.                                
  104.                                 else if(a[i][j].up==1&&a[i-1][j].down==1)
  105.                                         {
  106.                                                 b[i][j]=b[i-1][j];
  107.                                                 if(a[i][j].left==1&&a[i][j-1].right==1)
  108.                                                 {       
  109.                                                         if(b[i][j-1]>b[i][j])

  110.                                                         {       
  111.                                                
  112.                                                                 for(k=0;k<=i-1;k++)
  113.                                                                 {
  114.                                                                         for(p=0;p<m;p++)
  115.                                                                         {
  116.                                                                         if(b[k][p]==b[i][j-1])
  117.                                                                         b[k][p]=b[i][j];
  118.                                                                
  119.                                                                         }
  120.                                                                 }

  121.                                                                 for(k=0;k<j-1;k++)
  122.                                                                         if(b[i][k]==b[i][j-1])
  123.                                                                         b[i][k]=b[i][j];

  124.                                                         }
  125.                                                         if(b[i][j-1]<b[i][j])
  126.                                                         {
  127.                                                                         for(k=0;k<=i-1;k++)
  128.                                                                 {
  129.                                                                         for(p=0;p<m;p++)
  130.                                                                         {
  131.                                                                         if(b[k][p]==b[i][j])
  132.                                                                         b[k][p]=b[i][j-1];
  133.                                                                
  134.                                                                         }
  135.                                                                 }

  136.                                                                 for(k=0;k<j-1;k++)
  137.                                                                         if(b[i][k]==b[i][j])
  138.                                                                                 b[i][k]=b[i][j-1];
  139.                                                        
  140.                                                         }

  141.                                                        
  142.                                                         b[i][j]=b[i][j]>b[i][j-1]?b[i][j-1]:b[i][j];
  143.                                                         b[i][j-1]=b[i][j];
  144.                                                 }
  145.                                                
  146.                                         }
  147.                                 else if(a[i][j].left==1&&a[i][j-1].right==1)
  148.                                                   b[i][j]=b[i][j-1];
  149.                                 else
  150.                                         {
  151.                                        
  152.                                                 b[i][j]=max(i,m,j,b)+1;
  153.                                         }
  154.                                
  155.                         }

  156.                        
  157.                 int        num=0;
  158.                 for(i=0;i<n;i++)
  159.                         for(j=0;j<m;j++)
  160.                         {
  161.                        
  162.                                 if(b[i][j]>=num)
  163.                                 {
  164.                                         num=b[i][j];
  165.                        
  166.                                 }
  167.                         }
  168.                 printf("%d\n",num);
  169.        
  170.         }
  171.        

  172. }


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP