考试整理

Posted gongcheng456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考试整理相关的知识,希望对你有一定的参考价值。

残缺棋盘问题

技术图片

 

 

技术图片

这个需要采取分治的思想

就是使劲的将棋盘分为等价的四份

知道找到一个残块,然后递归放置直到整张棋盘

Code:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<stack>
using namespace std;
inline int read() 
{
    int X=0,w=1; 
    char c=getchar();
    while(c<0||c>9)
    { 
        if (c==-)
        {
            w=-1; 
        } 
        c=getchar();
    }
    while(c>=0&&c<=9)
    {
        X=(X<<3)+(X<<1)+c-0;
        c=getchar();
    } 
    return X*w;
}
int k,x,y,size=1;
int board[1500][1500];
inline int work(int a,int b,int size,int A,int B)//a->枚举的左上;b->枚举的右上;size->区域边长;A->残块的横;B->残块的纵。 
{
    if(size<2)
        return 0;
    int s;
    s=size/2;
    if(A>=(a+s)&&B>=(b+s))
    {
        work(a+s,b+s,s,A,B);
        board[a+s-1][b+s-1]=1;
        board[a+s-1][b+s]=1;
        board[a+s][b+s-1]=1;
        work(a,b,s,a+s-1,b+s-1);
        work(a,b+s,s,a+s-1,b+s);
        work(a+s,b,s,a+s,b+s-1);
    }
    else if(A>=(a+s)&&B<(b+s))
    {
        work(a+s,b,s,A,B);
        board[a+s-1][b+s-1]=2;
        board[a+s-1][b+s]=2;
        board[a+s][b+s]=2;
        work(a,b,s,a+s-1,b+s-1);
        work(a,b+s,s,a+s-1,b+s);
        work(a+s,b+s,s,a+s,b+s);
    }
    else if(A<(a+s)&&B>=(b+s))
    {
        work(a,b+s,s,A,B);
        board[a+s-1][b+s-1]=3;
        board[a+s][b+s-1]=3;
        board[a+s][b+s]=3;
        work(a,b,s,a+s-1,b+s-1);
        work(a+s,b,s,a+s,b+s-1);
        work(a+s,b+s,s,a+s,b+s);
    }
    else if(A<(a+s)&&B<(b+s))
    {
        work(a,b,s,A,B);
        board[a+s-1][b+s]=4;
        board[a+s][b+s-1]=4;
        board[a+s][b+s]=4;
        work(a,b+s,s,a+s-1,b+s);
        work(a+s,b,s,a+s,b+s-1);
        work(a+s,b+s,s,a+s,b+s);
    }
}
int main()
{
    freopen("chessboard.in","r",stdin);
    freopen("chessboard.out","w",stdout);
    k=read(),x=read(),y=read();
    board[x][y]=7;
    for(int i=1;i<=k;i++)
        size=size*2;
    work(1,1,size,x,y);
    for(int i=1;i<=size;i++)
    {
        for(int j=1;j<=size;j++)
            printf("%d ",board[i][j]);
        printf("
");
    }
    return 0;
}

相对还是比较好(李姐的)

以上是关于考试整理的主要内容,如果未能解决你的问题,请参考以下文章

小程序各种功能代码片段整理---持续更新

常用python日期日志获取内容循环的代码片段

OCP|052052最新考试题库及答案整理

扫地阿姨看完都学会了!java高级架构师考试

开源开源系统整理-考试问卷等

最全最详细publiccms常用的代码片段