• 牛客Another Distinct Values


    题目

    我一开始试了一下n=3,发现不行,于是就猜测只有2可以,交了一发,通过了50%。所以我猜测只有偶数可以,奇数都不行。

    中间空白部分放n=2的情况就行。因为n=2的情况时,最大只有2,所以我们可以放心地用3,4。我们可以发现,一个图里既然有了n,那么最小一定是-n+1,而不是-n,所以外圈放两个最大的n,n-1,两个最小的,-n+1,-n+2,其他排都是0,这样就可以在空的部分放n=n-2时的情况了,不断递归就行。

    比如n=4的完整的图是

    再比如6的时候,也是如此。

    #include<iostream>
    using namespace std;
    int a[201][201];
    int N;
    int k;
    void dfs(int n)
    {
        for(int i=k;i<=N-k+1;i++){
            for(int j=k*2-1;j<=N;j++){
                a[i][j]=-1;
            }
        }
        for(int j=k*2-1;j<=N;j++){
            a[k][j]=1;
        }
        for(int i=k;i<N-k+1;i++){
            a[i][k*2-1]=1;
        }
        a[N-k+1][k*2-1]=0;
        k++;
        if(n==2)return;
        dfs(n-2);
    }
    int main()
    {
        int t;
        cin>>t;
        while(t--){
            cin>>N;
            if(N%2==1)cout<<"impossible"<<endl;
            else{
                    cout<<"possible"<<endl;
                    k=1;
                    dfs(N);
                    for(int i=1;i<=N;i++){
                        for(int j=1;j<=N;j++){
                            cout<<a[i][j]<<" ";
                        }
                        cout<<endl;
                    }
            }
        }
        return 0;
    }
    View Code

    其实应该是想到是规律的了,没有很好的依据n=2的这个条件有利的展开,

  • 相关阅读:
    DLS的迷茫
    DFS系统
    前辈的一次培训
    BAV99 开关二极管
    学习射频IC卡 MFRC522,入手了一块板子
    Olink出新版本了 兼容JlinkV8 带串口功能
    Keil中慎用Printf()
    Keil : Cannot enter Debug Mode解决方法:
    热敏打印机应用笔记
    MFRC522 晶震不起震
  • 原文地址:https://www.cnblogs.com/shuaihui520/p/9388279.html
Copyright © 2020-2023  润新知