Day2——搜索(二)廣搜

今天上的是廣搜。因爲座位移了,所以看得更清楚,聽得也懂了一些。


深搜就是求解,而廣搜是求最優解。所以其實是有很大不同的。
今天的考題,第一題很簡單,但是還是有人爆零。我只對了第一題。


第一題——構造迴文串

描述:

小A有n種字符,其中第i種字符有ai個,現在小A想知道能否用上他擁
有的所有字符構造一個迴文串。輸入第一行一個正整數��,接下來一行��個正整數����如題意所述。輸出一行YES表示他能做到,NO表示不能。數據規模:對於100%的數據:1 ≤ �� ≤ 100, 1 ≤ ���� ≤ 100。

解:

在讀入n之後,循環讀入ai,記錄ai爲奇數的個數有幾個。如果奇數個數小於等於1,則輸出“YES”,否則輸出“NO”。
看思路就是很簡單,所以錯的都是馬虎吧。有的是因爲題目沒看清,將“YES”“NO”寫成了小寫,還有的是因爲把文件輸入輸出註釋掉,提交的時候沒有把斜槓刪了。所以要注意啊。
代碼:

#include<bits/stdc++.h> 
using namespace std; 
int main()
{
    freopen("palindromic.in","r",stdin);
    freopen("palindromic.out","w",stdout);
    int n,i,j,a,s=0;
    cin>>n;
    for (i=1;i<=n;i++)
    {
        cin>>a;
        if (a%2!=0) s++; 
    } 
    if (s==1||s==0) cout<<"YES"<<endl;
      else if (s>1) cout<<"NO"<<endl; 
    fclose(stdin);
    fclose(stdout);
    return 0;
}

第二題——矩陣編碼

題目:

有一個邊長爲��(�� = 2��)的正方形矩陣,其中元素均爲0或1,如下方左圖所示。
這裏寫圖片描述

老師說這一題其實沒有多大難度。只要把模板套一下就好了。然後在此放上老師的程序:

#include<bits/stdc++.h>
using namespace std;
const int N=522, M=N*N*2;
//char hexdigit[17]="0123456789ABCDEF";
int n,qx[M]={},qy[M]={},l[M]={},head=0,tail=0;
int a[N][N]={},s[N][N]={},len=0;
char ch[M]={};
int main()
{
    freopen("coding.in","r",stdin);
    freopen("coding.out","w",stdout);
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        for(int i=1;i<=n;++i)
            for(int j=1;j<=n;++j)
                scanf("%d",&a[i][j]);
        for(int i=1;i<=n;++i)
            for(int j=1;j<=n;++j)
                s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
        len=0;
        head=tail=0;
        ++tail;
        qx[tail]=1,qy[tail]=1,l[tail]=n;
        while(head!=tail)
        {
            ++head;
            int sx=qx[head], sy=qy[head], sl=l[head];
            int sum=s[sx+sl-1][sy+sl-1]-s[sx+sl-1][sy-1]
                    -s[sx-1][sy+sl-1]+s[sx-1][sy-1];
            if(sum==sl*sl)
            {
                ch[++len]='0';
                ch[++len]='1';
                continue;
            }
            if(sum==0)
            {
                ch[++len]='0';
                ch[++len]='0';
                continue;
            }
            ch[++len]='1';
            int nl=sl/2;
            ++tail;
            qx[tail]=sx,qy[tail]=sy,l[tail]=nl;
            ++tail;
            qx[tail]=sx,qy[tail]=sy+nl,l[tail]=nl;
            ++tail;
            qx[tail]=sx+nl,qy[tail]=sy,l[tail]=nl;
            ++tail;
            qx[tail]=sx+nl,qy[tail]=sy+nl,l[tail]=nl;
        }
        ch[++len]=0;
        puts(ch+1);
    }
    fclose(stdin);
    fclose(stdout);
}
發佈了40 篇原創文章 · 獲贊 9 · 訪問量 5720
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章