首页 > 代码库 > codevs 2928 你缺什么
codevs 2928 你缺什么
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题目描述 Description
继“你幸福吗”之后,央视又推出了“你缺什么”。而在采访过程中,记者发现了一些问题。
记者要采访n个人。已知第i个人要回答Ta缺某事物Xi,但如果Ta之前的一个人的答案和Ta一样,Ta就会改口。为了避免受访者改口,记者决定改变采访顺序。
现在给出这n个人的答案,请输出一种可行的方案。要求该方案字典序最小。数据保证有解。
输入描述 Input Description
第一行,一个数n。
接下来的n行,第i+1行为Xi。
输出描述 Output Description
一行,n个数,表示依次访问n个人的顺序。以空格隔开。
样例输入 Sample Input
10
1
5
4
1
4
2
1
3
3
5
样例输出 Sample Output
1 2 3 4 5 6 7 8 10 9
数据范围及提示 Data Size & Hint
0<n<=104,0<Xi<=5。数据由随机数产生。
传送门 点此展开
我想回答 我缺心眼。。这么个题我一共交了三遍。。
就是八皇后稍微改改嘛。。
#include<cstdio> #include<iostream> using namespace std; int a[10001],vis[10001],ans[10001],n,flag; void ss(int t) { if(flag) return; if(t>n) return; for(int i=2;i<=n;i++) { if(!vis[i]&&a[i]!=a[ans[t-1]]) { ans[t]=i; vis[i]=1; ss(t+1); vis[i]=0; ans[t]=0; } } } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); ans[1]=1; vis[1]=1; ss(2); for(int i=0;i<n;++i) cout<<ans[i]<<" "; return 0; }
codevs 2928 你缺什么
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。