WY80. 美妙的约会
描述
牛牛和妞妞在一天晚上决定一起去看一场情人节演唱会,可是由于这场演唱会实在太出名了,有很多情侣都来观看,牛牛和妞妞不小心被人流冲散了!输入描述
第一行一个整数n,表示一共有n对情侣,编号从1到n。同一对情侣编号相同。1<=n<=100输出描述
一个整数,代表最少交换次数。示例1
输入:
3 3 3 2 2 1 1
输出:
0
示例2
输入:
4 1 2 3 4 1 2 3 4
输出:
6
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-07-23
#include <stdio.h> int main() { int n; int left=0,right,count=0; scanf("%d ",&n); int a[2*n],flag[2*n]; for(int i=0;i<2*n;i++) { scanf("%d",&a[i]); flag[i]=1; } while(left<2*n) { if(flag[left]) { flag[left]=0; right=left+1; while((right<2*n)&&(a[left]!=a[right])) { count+=flag[right]; right++; } flag[right]=0; } left++; } printf("%d",count); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2019-11-06
#include<stdio.h> #define maxlength 200 int count(int n,int p[]); void swap(int a,int p[]); int main(void) { int n; int i,j; int a[maxlength];; int distance=0; int test=0; scanf("%d",&n); int sum=2*n; for(i=0;i<sum;i++) { scanf("%d",&a[i]); } for(j=n;j>0;j--) { distance+=count(j,a); } printf("%d",distance-n); } int count(int n,int p[]) { int k=p[2*n-1]; int i; int distance=0; for(i=0;i<=(2*n-2);i++) { if(p[i]==k) { swap(i,p); distance++; } } return distance; } void swap(int a,int p[]) { int i; i=p[a]; p[a]=p[a+1]; p[a+1]=i; }