zoukankan      html  css  js  c++  java
  • 第一篇博客UVA201

    因接触该类题型很少 故没有想出相应的解决办法 故借鉴了网上他人的方法 在看了他人程序后 自己又打了一遍 并加上了一些注释 希望对一些只会C的同学有些帮助。

    #include<stdio.h>
    #include"common.h"//自己写的一个头文件 本题中Min函数是其中之一
    #include<string.h>

    int H[10][10],V[10][10];
    int n,m;
    int size_[10];

    void zheng(int x,int y)
    {
    int a1,a2,a;
    a1=n-x;//可以往右最长的边 
    a2=n-y;//往下最长的边 
    a=min(a1,a2); //可能组成最大的正方形 
    int i,j;
    for(i=0;i<a;i++)//i+1表示所有可能的边长 

    if(H[x+i][y]&&V[x][y+i]) 
    {
    for(j=0;j<=i;j++)
    {
    if(!H[x+1+i][y+j]||!V[x+j][y+1+i]) /*其中1+i表示边长 x为起始的点则[x+1+i][y] 表示该正方形
    左下角那个点[x+1+i][y+j]即从左下角那个点一直循环到最右边 同理可得 [x+j][y+1+i] 表示从
    右上角那个点一直循环到右下角 这样和前面的形成了封闭正方形 
    */
    break;
    if(i==j)// 
    size_[i+1]++;
    }
    }
    else break;



    }
    void biaoji()
    {
    memset(H,0,sizeof(H));
    memset(V,0,sizeof(V));
    for(int i=0;i<m;)
    {
    int c;
    c=getchar();
    while(c=='H'||c=='V')
    {
    i++;
    if(c=='H')

    H[getchar()-'0'][getchar()-'0']++; 
    }
    if(c=='V')
    {
    V[getchar()-'0'][getchar()-'0']++;
    }
    c=getchar();
    }
    }
    for(int i=0;i<10;i++)
    {
    for(int j=0;j<10;j++)
    {
    printf(".");
    }
    }
    }

    void huaxian()
    {
    for(int i=1;i<=n;i++)
    {
    for(int j=1;j<=n;j++)
    {
    if(H[i][j]&&V[i][j])
    zheng(i,j);
    }
    }
    }

    int main(void)
    {
    scanf("%d%d",&n,&m);
    biaoji();
    huaxian();
    for(int i=1;i<=10;i++)
    {
    printf("边长为%d的正方形有%d个 ",i,size_[i]);
    }
    return 0;
    }

    另:本人自己的思路是定义一个三维数组a[10][10][4] 前面代表点的行和列 第三维代表该点上下左右方向是否有线 其元素数值判断有无 1代表有 0代表无

    那么就可以根据读取H V的数据来进行相关的赋值 如H12 就可以赋a[1][2][3]=1 a[1][3][2]=1 以此类推 而判断的方法与此题相同(这里是难点 我就是这里想不出来)

    即本题zheng函数的思路。

  • 相关阅读:
    C#自定义控件之数字文本框
    C# 校验字符串是否为IP格式
    C# winform 解决加载闪烁,背景透明等问题
    SQL Server 数据类型
    C#自定义控件之下拉列表框
    C#将 byte[ ] 转换为对应的struct
    AFNetworking图片上传
    xfs删除oracle数据文件恢复
    揭秘String类型背后的故事——带你领略汇编语言魅力
    [批处理]截取for命令里面的变量%%i
  • 原文地址:https://www.cnblogs.com/aloney/p/4462693.html
Copyright © 2011-2022 走看看