2020 GDUT Rating Contest III H. Photoshoot

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;
		}
	}
}
发布了24 篇原创文章 · 获赞 1 · 访问量 657

猜你喜欢

转载自blog.csdn.net/palax0/article/details/104828127
今日推荐