• 零件


    零件

     
    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;
        }
    }
    
    
  • 相关阅读:
    和菜鸟一起学linux之bluetooth学习记录基础知识
    教父马云的经典语录汇总
    win32 多线程基础
    自己收集整理的微软错误代码大全(中文和英文)
    如何解决数据库中的字符型字段值中包含'0A'时,导出的文件用EXECEL打开时行数变多或者将结果导入数据库出错
    win32 TCP网络文件传输服务器端1.23
    Android窗口管理服务WindowManagerService对窗口的组织方式分析
    和菜鸟一起学linux总线驱动之DMA传输
    win 32下c语言文件传输客户端1.23
    Resolution to the record count increasing of the file exported from DB when ‘0A’ is included in it
  • 原文地址:https://www.cnblogs.com/tufujie/p/4854251.html
Copyright © 2020-2023  润新知