原题
题目大意
给出一个数组,该数组是一个 N N N排列的数组变形而来,且 b [ i ] = a [ i ] + a [ i + 1 ] b[i]=a[i]+a[i+1] b[i]=a[i]+a[i+1]
题目分析
确定第一个数,后面全部都确定了,找到一个合法的就能输出了,就是这样
代码
#include<cstdio>
#include<cstring>
int a[1011],b[1011];
bool been[1011];
int main()
{
int n;
bool flag;
scanf("%d",&n);
for (int i = 1;i < n;i++)
{
scanf("%d",b + i);
}
for (int i = 1;i < b[1];++i)
{
memset(been,0,sizeof(been));
a[0] = i;flag = true;
been[a[0]] = true;
for (int j = 1;j < n;++j)
{
a[j] = b[j] - a[j - 1];
if (a[j] == a[j - 1] or a[j] <= 0 or a[j] > n or been[a[j]])
{
flag = false;
break;
}
been[a[j]] = true;
}
if (flag) break;
}
for (int i = 0;i < n;i++) printf("%d ",a[i]);
return 0;
}