社区讨论
本蒟弱改不下去了,大佬帮忙看看qwq
P1092[NOIP 2004 提高组] 虫食算参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi7db7sq
- 此快照首次捕获于
- 2025/11/20 19:48 4 个月前
- 此快照最后确认于
- 2025/11/20 19:48 4 个月前
CPP
#include<iostream>
#include<cstdio>
using namespace std;
int qwq[27],n; //字母代表数
int qaq[27][4]; //算式
bool qvq[27],ye; //标记
bool ok()
{
int h=0,a,b,c;
//cout << endl;
//for(int r=1;r<=n;r++)
//{
// cout << qwq[r] << ' ';
//}
//cout << endl;
//for(int a=1;a<=3;a++)
//{
// for(int r=1;r<=n;r++)
// {
// cout << qwq[qaq[r][a]];
// }
// cout << endl;
//}
//cout << endl;
for(int r=n;r>=1;r--)
{
a=qwq[qaq[r][1]];
b=qwq[qaq[r][2]];
c=qwq[qaq[r][3]];
//cout << a << ' ' << b << ' ' << c << endl;
h+=a+b;
if(c%n != h%n) return 0;
h/=n;
}
return 1;
}
bool cx()
{
int h=0,a,b,c;
for(int r=n;r>=1;r--)
{
a=qwq[qaq[r][1]];
b=qwq[qaq[r][2]];
c=qwq[qaq[r][3]];
if(a == 30 || (b == 30 || c == 30))
{
//emmm;
}
else
{
h=a+b;
if(r == 1) if(h >= n) return 0;
h%=n;
c%=n;
if(h != c && (h+1)%n != c) return 0;
//cout << h << ' ' << c << endl;
}
}
return 1;
}
void dfs(int o)
{
if(o == n+1)
{
if(ok()) ye=1;
return;
}
for(int r=0;r<n;r++)
{
if(qvq[r])
{
qwq[o]=r;
qvq[r]=0;
if(cx()) dfs(o+1);
if(ye) return;
qvq[r]=1;
qwq[o]=30;
}
}
}
int main()
{
char z;
cin >> n;
for(int a=1;a<=3;a++)
{
for(int r=1;r<=n;r++)
{
cin >> z;
qaq[r][a]=z-64;
}
}
for(int r=0;r<=n;r++)
{
qvq[r]=1;
qwq[r]=30;
}
dfs(1);
for(int r=1;r<=n;r++)
{
cout << qwq[r] << ' ';
}
}
改了3小时了
实在不会写
QvQ
回复
共 1 条回复,欢迎继续交流。
正在加载回复...