记录编号 599402 评测结果 AAAAAAAA
题目名称 时钟 最终得分 100
用户昵称 Gravatar 是否通过 通过
代码语言 C++ 运行时间 0.604 s
提交时间 2025-03-10 21:27:42 内存使用 3.38 MiB
显示代码纯文本
#include<bits/stdc++.h>

using namespace std;
int ans[20],eans[20];
int a[20][20],b[20][20],step,mistep=114514191;
int clo(int y)
{
    return (y+1)%4;
}
void print()
{
    
    for(int i=1;i<=3;i++)
        {
            for(int j=1;j<=3;j++)
            {
                cout<<a[i][j];
            }
            cout<<endl;
        }
        for(int i=1;i<=3;i++)
        {
            for(int j=1;j<=3;j++)
            {
                cout<<b[i][j];
            }
            cout<<endl;
        }
}
void tran(int op)
{
    switch (op)
    {
    
        case 1:{
          
        
            
                
            
                b[1][1]=clo(b[1][1]);
                b[2][1]=clo(b[2][1]); 
                b[2][2]=clo(b[2][2]); 
                b[1][2]=clo(b[1][2]);
                break;
        }

        case 2:
            {
            
                b[1][1]=clo(b[1][1]); 
                b[2][1]=clo(b[2][1]); 
                b[3][1]=clo(b[3][1]); 
                break;
        }
        case 3:
            {
                b[2][1]=clo(b[2][1]); 
                b[3][1]=clo(b[3][1]); 
                b[2][2]=clo(b[2][2]); 
                b[3][2]=clo(b[3][2]); 
                break;
            }
        case 4:
            {
                b[1][1]=clo(b[1][1]); 
                b[1][2]=clo(b[1][2]); 
                b[1][3]=clo(b[1][3]); 
                break;
            }
        case 5:
            {
                b[2][1]=clo(b[2][1]); 
                b[2][2]=clo(b[2][2]); 
                b[2][3]=clo(b[2][3]); 
                b[1][2]=clo(b[1][2]);
                b[3][2]=clo(b[3][2]);
                break;
            }
        case 6:
            {
                b[3][1]=clo(b[3][1]); 
                b[3][2]=clo(b[3][2]); 
                b[3][3]=clo(b[3][3]); 
                break;
            }
        case 7:
            {
                b[2][2]=clo(b[2][2]); 
                b[1][3]=clo(b[1][3]); 
                b[1][2]=clo(b[1][2]); 
                b[2][3]=clo(b[2][3]); 
                break;
            }
        case 8:
            {
                b[1][3]=clo(b[1][3]); 
                b[2][3]=clo(b[2][3]); 
                b[3][3]=clo(b[3][3]); 
                break;
            }
        case 9:
            {
                b[2][2]=clo(b[2][2]); 
                b[3][3]=clo(b[3][3]); 
                b[3][2]=clo(b[3][2]); 
                b[2][3]=clo(b[2][3]); 
                break;
            }
    }
}
void dfs(int x)
{
    if(x==10)
    {
        for(int i=1;i<=3;i++)
        {
            for(int j=1;j<=3;j++)
            {
                b[i][j]=a[i][j];
            }
        }
        
        bool bol=false;
        for(int i=1;i<=9;i++)
        {
            for(int j=1;j<=ans[i];j++)
            {
                tran(i);
            }
        }
        
        for(int i=1;i<=3;i++)
        {
            for(int j=1;j<=3;j++)
            {
                if(b[i][j]!=0)
                {
                    bol=true;
                    break;
                }
            }
        }
        if(!bol)
        {
            
            if(step<mistep)
            {
                mistep=step;
                for(int i=1;i<=9;i++)
                {
                    eans[i]=ans[i];
                }
                
            }
            else if(step==mistep)
            {
                int a1,a2,b1=10,b2=0;
                for(int i=1;i<=9;i++)
                {
                    if(ans[i]!=0)
                    a2=i;
                    if(eans[i!=0])
                    b2=i;
                }
                for(int i=9;i>=1;i--)
                {
                    if(ans[i]!=0)
                    a1=i;
                    if(eans[i!=0])
                    b1=i;
                }
                if((a1-a2)<=(b1-b2))
                {
                    for(int i=1;i<=9;i++)
                {
                    eans[i]=ans[i];
                }
                }
            }
        }
        return;
    }
    for(int i=0;i <=3; ++i)
    {
        ans[x]=i, step+=i; 
        dfs(x+1);
        ans[x]=0, step-=i;
    } 
    
}
int main()
{
    freopen("clocks.in","r",stdin);
    freopen("clocks.out","w",stdout);
    cin>>a[1][1];
    cin>>a[2][1];
    cin>>a[3][1];
    cin>>a[1][2];
    cin>>a[2][2];
    cin>>a[3][2];
    cin>>a[1][3];
    cin>>a[2][3];
    cin>>a[3][3];
    for(int i=1;i<=3;i++)
    {
        for(int j=1;j<=3;j++)
        {
            a[i][j]/=3;
            a[i][j]%=4;
        }
    }
    dfs(1);
    for(int i=1;i<=9;i++)
    {
        for(int j=1;j<=eans[i];j++)
        {
            cout<<i<<" ";
        }
    }
    
    
    
    return 0;
 }