codeforces——B. An express train to reveries(全排列)
来源:互联网 发布:淘宝2017年大股东是谁 编辑:程序博客网 时间:2024/06/10 19:56
题意:
给出两个数组a,b,找出另一个数组p,满足:
(1)a中元素与p只有一个不一样,b中元素与p只有一个不一样
(2)p中元素从1到n都有。
分析:
首先,找出a和b位置相同但是数值不同的位置,并且记录下来,再找出还需要放置的元素,然后全排列,一次试试,看是否满足条件。我这个菜鸡,其实当时没做出来(哎,只做出一个的菜鸡,日常掉分,难受),因为输出格式错了,总是得不出答案,就心态崩了,以后一定要耐心。
题目链接:
(http://codeforces.com/contest/814/problem/B)
代码如下:
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>using namespace std;vector<int>pos;vector<int>cor;vector<int >shengyu;int main(){ //输入部分 int n; cin>>n; int a[1005],b[1005]; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) cin>>b[i]; for(int i=0;i<n;i++) if(a[i]==b[i]) //如果同位置数字相同,则记录到cor中 cor.push_back(a[i]); else //如果不同,把位置记录到pos中 pos.push_back(i); //找出剩余的没有确定位置的数字 for(int i=1;i<=n;i++) { int flag=0; for(int j=0;j<cor.size();j++) { if(cor[j]==i) flag=1; } if(!flag) shengyu.push_back(i); } //全排列,用不同顺序的剩余数字测试 do { int num1=0,num2=0; for(int i=0;i<shengyu.size();i++) { if(a[pos[i]]!=shengyu[i]) //检测a数组中被标记位置 num1++; if(b[pos[i]]!=shengyu[i])//检测b数组中被标记位置 num2++; } if(num1==1&&num2==1) //如果不同的都只出现一次,则正确,输出 { for(int i=0,j=0;i<n;i++) if(i==pos[j]) //处理被标记位置的输出 { cout<<shengyu[j]<<" "; j++; } else { cout<<a[i]<<" "; continue; } return 0; } } while(next_permutation(shengyu.begin(),shengyu.end()));}
阅读全文
0 0
- codeforces——B. An express train to reveries(全排列)
- codeforces B. An express train to reveries
- 【Codeforces 814 B. An express train to reveries】+ 构造
- codeforces 814B An express train to reveries
- codeforces 814B An express train to reveries
- codeforces 814B An express train to reveries(思维)
- Codeforces 814B-An express train to reveries
- Codeforces 814 B An express train to reveries
- codeforces 814 B An express train to reveries
- CodeForces 814B An express train to reveries
- codeforces An express train to reveries 814B
- CodeForces-814B An express train to reveries 解题报告
- Codeforces Round #418 B--An express train to reveries
- An express train to reveries CodeForces
- 814/ B. An express train to reveries
- B. An express train to reveries
- CodeForces An express train to reveries(简单的模拟)
- An express train to reveries
- u3d 两个同样obj查找子物体
- Android控件中TextView及EditText详解
- 2017 四川省赛 D. Dynamic Graph
- node使用express搭建简单web框架并实现文件上传
- VPN之——新增OpenVPN客户端的解决方案
- codeforces——B. An express train to reveries(全排列)
- H5移动开发
- Android控件2
- Java语言的前世今生
- 最小生成树-Prim算法
- pyinstaller打包运行报错failed to execute script main
- 高级语言,汇编语言,机器语言
- Spark-窗口函数
- Android常用控件-01