#include<iostream>
using namespace std;
int ans[301];
int ans1[301];
int select[301];
int n;
int ok=0;
bool check()
{
for(int i=1;i<=n;i++)
{
if(i==1)
{
ans1[i]=(select[i]+select[i+1])/2;
}
else if(i==n)
{
ans1[i]=(select[i]+select[i-1])/2;
}
else
{
ans1[i]=(select[i]+select[i-1]+select[i+1])/3;
}
}
int flag=1;
num++;
for(int i=1;i<=n;i++)
{
if(ans[i]!=ans1[i])
{
flag=0;
break;
}
}
return flag;
}
void dfs(int x)
{
if(ok) return;
if(x==n+1)
{
if(check())
{
for(int i=1;i<=n;i++)
cout<<select[i]<<" ";
ok=1;
return;
}
return;
}
if(x==1)
{
for(int i=1;i<=ans[1]*2;i++)
{
select[x]=i;
dfs(x+1);
}
return;
}
else if(x==2)
{
for(int i=ans[1]*2-select[1];i<=ans[1]*2+1-select[1];i++)
{
if(i>0)
{
select[x]=i;
dfs(x+1);
}
}
return;
}
else if(x>2)
{
for(int i=ans[x-1]*3-select[x-1]-select[x-2];i<=2+ans[x-1]*3-select[x-1]-select[x-2];i++)
{
if(i>0)
{
select[x]=i;
dfs(x+1);
}
}
return;
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>ans[i];
dfs(1);
return 0;
}
ccf再卖菜暴力
最新推荐文章于 2020-12-11 19:57:49 发布