sjystone 2020-12-19 21:09 采纳率: 100%
浏览 49
已采纳

算法竞赛(刘汝佳) 习题4-2 正方形 UVa201

#include <iostream>
#include <cstdio>
using namespace std;
int n,m,w = 0, turn = 1;

int main(){
    while ( scanf("%d %d",&n,&m)==2 ){
        int arr_H[10][10]={{0,0}}, arr_V[10][10]={{0,0}};
        //存入数据
        for ( int q=0; q<m; q++ ){
            char ch;
            int i,j;
            cin >> ch >> i >> j;
            if ( ch=='H' ) arr_H[i-1][j-1] = 1;
            else arr_V[j-1][i-1] = 1;
        }
        
        //以边长遍历
        int count[10]={0}, ist = 0;
        for ( int j=1; j<=n; j++ ){
            ist ++;
            //以位置遍历
            for ( int x=0; x<n-j; x++ ){
                for ( int y=0; y<n-j; y++ ){
                    //判断是否是正方形
                    int judge = 1;
                    for ( int k=0; k<=j; k++ )
                        if ( !arr_H[x+k][y] || !arr_V[x][y+k] ) judge = 0;
                    if ( judge ) count[ist]++;
                }
            }
        }
        if ( w ) printf("\n**********************************\n\n");
        printf("Problem #%d\n\n",turn++);
        int judge = 1;
        for ( int i=1; i<=n; i++ ){
            if ( count[i]!=0 ){
                printf("%d square (s) of size %d\n",count[i],i);
                judge = 0;
            }
        }
        if ( judge ) printf("No completed squares can be found.\n");
        w = 1;
    }
    return 0;
}

整体思路是用两个数组,arr_H[] arr_V[]来保存横线和竖线,遍历每一个正方形的左上角顶点。count数组表示每个尺寸正方形的数量。我拿测试样例和自己想的样例,用别人ac代码和我的代码运行,结果都一样,但我的提交显示wa

  • 写回答

6条回答 默认 最新

  • 波塞冬的祝福 2020-12-25 08:52
    关注

    看了一下,wa应该是你两个for循环思路不对,再好好想想吧233 或者看看教参

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀