H. Photoshoot
题目描述
有n头牛,他们的序号从为1-n,现在他们按一定顺序排好,给出每对相邻的两头牛的序号之和,求出牛现在的序号。
题目分析
因为确定其中一头牛的序号,就可以得出所有牛的序号,又因为不存在两头牛序号相同,因此试出第一头牛的序号即可。
代码
#include <bits/stdc++.h>
using namespace std;
int ans=0;
int main(){
int n,sum[999];
scanf("%d",&n);
for(int i=0;i<n-1;i++)
scanf("%d",sum+i);
for(int i=1;i<sum[0];i++){
int next=i;
bool visit[1001]={0},ok=1;
visit[i]=1;
for(int j=0;j<n-1&&ok;j++){
next=sum[j]-next;
//printf("i=%d,next=%d\n",i,next);
if(next<=0||next>n||visit[next])
ok=0;
else
visit[next]=1;
}
if(ok){
printf("%d ",i);
next=i;
for(int j=0;j<n-1;j++){
next=sum[j]-next;
printf("%d",next);
if(j!=n-2)
printf(" ");
else
printf("\n");
}
break;
}
}
}