zoukankan      html  css  js  c++  java
  • 零件

    零件

     
    Time Limit : 1000 MS   Memory Limit : 65536 KB
     

    Description

    有一种工业零件,分成左右两半,它们的形状由’X’和空格表示的二维图形表示,比如:左半的零件形状如下:
    XXXXX
    XXX
    XXXX
    XXX
    右半的零件的形状如下
                        XXX                                                               
                      XXXX                                                               
                      XXXX                                                               
                    XXXXX                                                               
    所有的左半边的零件的左边第一列都是X,所有右半的零件的右边第一列都是X。
    把这样的左右两个零件紧密地拼在一起,则可能存在空洞。零件本身也可能有空洞,但不会存在断裂的零件,每个空洞为一个空格,要求你写一个程序求出空洞的大小(空格的数目)。


    输入:
     
    第一行是一个整数K,表示有多少个测试用例,以后每一个测试用例占2n+1行。每个测试用例的第一行为一个整数n,(1<=n<=20),从第2行到n+1行为左半零件的二维图形,从第n+2行到2n+1行为右半零件。左半零件左对齐,最长一行不超过25列,
    右半零件右对齐,最长一行不超过25列


    输出:

    每行输出一个测试用例的结果。

     

    Sample Input

    2
    4
    XXXXX
    XXX
    XXXX
    XXX
      XXX
     XXXX
     XXXX
    XXXXX
    2
    XXXXX
    X
    XXXXX
      XXX
     

    Sample Output

    1
    6
    
    
    
    
    
    参考代码:
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int po[1000],va[10000];
    char s[1000];
    int main()
    {
        int ca,n,temp(0),j,ma(0),sta(0);
        cin>>ca;
        while(ca--)
        {
            cin>>n;
            getchar();
            temp=0;
            ma=999999999;
            sta=0;
            for(int i=0;i<n;i++)
            {
                gets(s);
                for(int j=0;s[j]!='';j++)
                {   if(s[j]==' ')
                    {
                        sta++;
                    }
                }
                po[i] = strlen(s);
                if(po[i]<ma)
                 ma=po[i];
            }
            for(int i=0;i<n;i++)
            {
                po[i]=po[i]-ma;
            }
            ma=9999999;
            for(int i=0;i<n;i++)
            {
                gets(s);
                for(j=0;s[j]!='X';j++)
                {;
                }
                va[i]=j;
                if(va[i]<ma)
                  ma=va[i];
                  for(;s[j]!='';j++)
                  {
                      if(s[j]==' ' )
                        sta++;
                  }
            }
            for(int i=0;i<n;i++)
            {
                va[i]=va[i]-ma;
               if(po[i]-va[i]>temp)
                 temp=po[i]-va[i];
            }
            ma=0;
            for(int i=0;i<n;i++)
            {
                ma=ma+va[i]+temp-po[i];
            }
            cout<<ma+sta<<endl;
        }
    }
    
    
  • 相关阅读:
    2015个人年度总结
    矢量图标的使用
    onsrcoll和scrollTop兼容与实现
    我们,曾是阿里宝宝
    linux 基本操作笔记
    认识与学习shell
    两道有趣的面试题
    使用css保持一定宽高比例
    我在 超级课程表 实习的那个月
    3、4月学习总结,如愿阿里前端实习生
  • 原文地址:https://www.cnblogs.com/tufujie/p/4854251.html
Copyright © 2011-2022 走看看