社区讨论
80分求条
P2630图像变换参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mdj5ceqs
- 此快照首次捕获于
- 2025/07/26 02:20 7 个月前
- 此快照最后确认于
- 2025/11/04 03:43 4 个月前
dework其实就是work的反操作,回溯用的
CPP#include<bits/stdc++.h>
using namespace std;
int a[10][10];
int b[10][10];
string res="ZZZZ";
void work(int op)
{
int c[10][10];
if(op==1)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[j][3-i+1]=a[i][j];
}
}
}
if(op==2)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[3-j+1][i]=a[i][j];
}
}
}
if(op==3)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[i][j]=a[i][3-j+1];
}
}
}
if(op==4)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[i][j]=a[3-i+1][j];
}
}
}
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
a[i][j]=c[i][j];
}
}
return ;
}
void dework(int op)
{
int c[10][10];
if(op==2)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[j][3-i+1]=a[i][j];
}
}
}
if(op==1)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[3-j+1][i]=a[i][j];
}
}
}
if(op==4)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[i][j]=a[3-i+1][j];
}
}
}
if(op==3)
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c[i][j]=a[i][3-j+1];
}
}
}
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
a[i][j]=c[i][j];
}
}
return ;
}
bool ck()
{
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
if(a[i][j]!=b[i][j])
{
return 0;
}
}
}
return 1;
}
void dfs(int dep,string ans)
{
if(ck())
{
if(ans.size()<res.size())
{
res=ans;
}
else
{
if(ans<res)
{
res=ans;
}
}
return ;
}
if(dep==5)
{
return ;
}
for(int i=1; i<=4; i++)
{
work(i);
dfs(dep+1,ans+(char(i+'A'-1)));
dework(i);
}
return ;
}
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
cin>>a[i][j];
}
}
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
cin>>b[i][j];
}
}
dfs(1,"");
if(res!="ZZZZ")
{
cout<<res;
}
else
{
cout<<"Poland cannot into space!!!";
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...