问题 K: A?H?

题目描述

目前图像识别是一项非常热门的技术,最流行莫不过是深度学习,识率甚至能达到 99%99% 以上。当然,对于简单的图像来说深度学习是没有必要的。比如要识别安徽拼音首字母 AA和HH,就可以不用深度学习就可以判断。现在有一些只含 AA或者HH的图像,,你知道该如何识别吗?

输入

第一行输入 正整数 TT,表示数据的组。每组数据中,第一行是两个正整nn和 mm,n≤100n≤100,m≤100m≤100,表示图像的大小。接下来有 nn行 ,每行mm个字符,只可能为 ‘.’ 或者 ‘#’ 。‘.’ 表示白色, ‘#’ 表示黑色。 ‘#’ 会通过上下左右或者连成一个区域,表示AA或HH字母。
数据保证字母在图像内 ,不会有缺失。数据保证图像里只含有AA或者HH,且除字母外无其它黑色区域。不存在空白 图像或者含有其它内容的数据。注意,字母不一定是正着的有可能斜横或者倒。特别提示:图像一定是白底黑字的,不会存在反色情况。

输出

对于每行数据, 输出 ‘Case t: X ’,X表示你所识别出来的字母

样例输入复制

1
3 6
######
..#.#.
...#..

样例输出复制

Case 1: A
#include<iostream>
#include<cstring>
#include <queue>

using namespace std;
const int maxn = 100 + 2;
char map[maxn][maxn];
int dx[4] = {1, 0, 0, -1};
int dy[4] = {0, -1, 1, 0};
int n, m;

struct Point
{
    int x,y;
};

void BFS(int x, int y)
{
    queue<Point> q{};
    q.push({x,y});
    while(!q.empty())
    {
        Point p=q.front();
        q.pop();
        for(int k=0;k<4;k++)
        {
            int nx=p.x+dx[k];
            int ny=p.y+dy[k];
            if(nx<0||nx>n+2||ny<0||ny>m+2||map[nx][ny]=='#')continue;
            q.push({nx,ny,});
            map[nx][ny]='#';
        }
    }
}


int main()
{
    int T;
    cin >> T;
   for(int t=1;t<=T;t++)
   {
        cin >> n >> m;
        memset(map, '.', sizeof(map));
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++)
                cin >> map[i][j];
        BFS(0, 0);
        bool flag = false;
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= m; j++)
            {
                if(map[i][j]=='.')
                {
                    flag=true;
                    break;
                }
            }
            if(flag)break;
        }
        if (flag)printf("Case %d: A\n",t);
        else printf("Case %d: H\n",t);
    }
    return 0;
}

clear all; close all; clc;tic 5%8866% Settings $8868% its_option =2; 966 0:??????,1:??????,2:?????? hoise_option=1; 8% 0:??????,1:?????? =4;NT=2; SNRdBs=[0:2:20];sq05=sqrt(0.5); obe_target =500; BER_target =1e-3; taw_bit_len= 2592-6; nterleaving_num = 72; deinterleaving_num = 72; _frame = 1e8; or i_SNR=1:length(SNRdBs) sig_power=NI;SNRdB=SNRdBs(i_SNR); sigma2=sig_power*10°(-SNRdB/10)*noise_option;sigmal=sqrt(sigma2/2); nobe = 0; Viterbi_init for i_frame=1:1:N_frame I %%88688868896%% ??????866988689686836% switch (bits_option) case (0】, bits=zeros(1,raw_bit_len); case (11, bits=ones(1,raw_bit_len); casef2), bits=randint(1,raw_bit_len); case (2), bits=randi(1,1,raw_bit_len)-1; end 686%6% ?????88%6% encoding_bits= convolution_encoder(bits); 6%%8%% ????? 8686% interleaved=[]; for i=l:interleaving_mum interleaved=[interleavedencoding_bits([i:interleaving_mum:end])];for tx_time-l:648 tx_bits=interleaved(1:8); interleaved(1:8)=[J; ??7 QAM16_symbol=QAM16_mod(tx_bits, 2); ?????69686666366685669 x(1,1) =QAM16_symbol(1);x(2,h)=QAM16_symbol(2); 90969696%????????????? 636585863666666 if rem(tx_time-1,81)==0 H = sq05*(randn(2,2)+j*randn(2,2)); end y =H*x; 66986896%88868% ????? 6688688%%88%% noise = sqrt(sigma2/2)*(randn(2,1)+j*randn(2,1)); if noise_option==1, y = y + noise;end %8%8%88%%8%8% ??????668888688888%% W=inv(H'*H+sigma2*diag (ones(1,2)))*H'; K_tilde =W*y; %%%%88%%8%8% ??????668888%58888%% x_hat = QAM16_slicer(X_tilde, 2); temp_bit=[temp_bit QAM16_denapper(X_hat, 2)]; end %%%8%%%%?????88%8886% deinterleaved=[]; for i=1:deinterleaving_rum deinterleaved=[deinterleaved temp_bit([i:deinterleaving_mum:end])];end %%%86%%%?22220%%%866% received_bit=Viterbi_decode(deinterleaved) 600%%22222 5%0%% for EC_dummy=1:1:raw_bit_len, A bit(BC dumnv) nahesnobe+1:endif nobe>=nobe_target, break; end end if (nobe>=nobe_target) break; end end %8%888888%%%%save BER data & Display 8%88%8888%88%BER(i_SNR)=nobe/((i_frame-1)*raw_bit_len+EC_dummy);fprintf(’t%dt\t%1.4f\n', SNRdB,BER(i_SNR)); if BER(i_SMR)<BER_target, break; end end详细注释这段matlab代码
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VICTOR.杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值