感觉就是个暴力,因为从题意来看只要确定第一头剩下的都能确定
则我们只需要枚举第一头即可
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e3+10;
int a[N],b[N];
bool st[N];
int n;
bool check(int x)
{
memset(st,0,sizeof st);
b[1]=x;
st[x]=true;
for(int i=1;i<n;i++)
{
b[i+1]=a[i]-b[i];
if(st[b[i+1]]||b[i+1]<1||b[i+1]>n)return false;
st[b[i+1]]=true;
}
return true;
}
int main()
{
cin>>n;
for(int i=1;i<n;i++)cin>>a[i];
for(int i=1;i<=n;i++)
{
if(check(i))
{
break;
}
}
for(int i=1;i<=n;i++)cout<<b[i]<<" ";
return 0;
}
求关注