计蒜客 Minimum Distance in a Star Graph 思维水题
2017-10-06 19:45
162 查看
题目链接
题意:
就是给你两个全排列,让你从第一个变换为第二个,每次只能将第一个位置和其他位置交换,问你最少的交换步骤?
思路:
因为只能和第一个交换,所以没有什么好的交换策略,依据贪心的思想如果第一个数不在他最终的位置则交换到最终位置,否则就找到后面未在正确位置的和第一个交换,一直模拟到全部归位.
PS: 赛场上是bfs+剪枝写的还是有点麻烦...
#include<bits/stdc++.h>
using namespace std;
char s[20],e[20];
int n,ans,pos[20];
void solve()
{
int flag;
while(1 == 1)
{
if(s[0] != e[0])
{
ans++;
swap(s[0],s[pos[s[0] - '0']]);
}
else
{
flag = 0;
for(int i = n-1;i > 0;--i)
{
if(s[i] != e[i])
{
swap(s[0],s[i]);
ans++;
flag = 1;
break;
}
}
if(!flag) break;
}
}
}
int main()
{
scanf("%d",&n);
for(int i = 1;i <= 5;++i)
{
scanf(" %s %s",s,e);
for(int j = 0;j < n;++j)
pos[e[j]-'0'] = j;
ans = 0;
solve();
printf("%d\n",ans);
}
}
题意:
就是给你两个全排列,让你从第一个变换为第二个,每次只能将第一个位置和其他位置交换,问你最少的交换步骤?
思路:
因为只能和第一个交换,所以没有什么好的交换策略,依据贪心的思想如果第一个数不在他最终的位置则交换到最终位置,否则就找到后面未在正确位置的和第一个交换,一直模拟到全部归位.
PS: 赛场上是bfs+剪枝写的还是有点麻烦...
#include<bits/stdc++.h>
using namespace std;
char s[20],e[20];
int n,ans,pos[20];
void solve()
{
int flag;
while(1 == 1)
{
if(s[0] != e[0])
{
ans++;
swap(s[0],s[pos[s[0] - '0']]);
}
else
{
flag = 0;
for(int i = n-1;i > 0;--i)
{
if(s[i] != e[i])
{
swap(s[0],s[i]);
ans++;
flag = 1;
break;
}
}
if(!flag) break;
}
}
}
int main()
{
scanf("%d",&n);
for(int i = 1;i <= 5;++i)
{
scanf(" %s %s",s,e);
for(int j = 0;j < n;++j)
pos[e[j]-'0'] = j;
ans = 0;
solve();
printf("%d\n",ans);
}
}
相关文章推荐
- 计蒜客 Minimum Distance in a Star Graph 2017icpc南宁赛区 字符串bfs
- Minimum Distance in a Star Graph(南宁网络赛)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛(J.Minimum Distance in a Star Graph)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Minimum Distance in a Star Graph
- 2017 icpc 南宁赛区 J. Minimum Distance in a Star Graph(bfs)
- Minimum Distance in a Star Graph
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛- J. Minimum Distance in a Star Graph
- ???Minimum Distance in a Star Graph
- 2017南宁网络赛J.Minimum Distance in a Star Graph(bfs求最短路)
- 2017 ACM-ICPC南宁网络赛: J. Minimum Distance in a Star Graph(BFS)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J Minimum Distance in a Star Graph 广度优先搜索
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J.Minimum Distance in a Star Graph
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J. Minimum Distance in a Star Graph
- 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)
- Minimum Distance in a Star Graph BFS/康托展开 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J. Minimum Distance in a Star Graph(bfs+状态保存)
- (HDU 5922)Minimum’s Revenge 思维水题 <2016CCPC东北地区大学生程序设计竞赛 - 重现赛 >
- Hard??没搞错吧,LeetCode水题一道:Find Minimum in Rotated Sorted Array II
- hdu5922 2016CCPC东北地区大学生程序设计竞赛 A题 Minimum’s Revenge(思维,水题)
- [LeetCode]题解(python):153-Find Minimum in Rotated Sorted Array