【CSDN竞赛】第十四期解题报告

这应该是站内相对详细的解题报告吧。
转载思路请@本人。

感想

关于自己

这一次出乎意料拿了第一,可能是别人没发挥好()。
题目感觉还行,难度适中。
有几个题目调了一段时间,还是调出来了。
由于本人要晚修,所以周三晚上那一场参加不了QAQ。
下次加油。

关于平台

题目听说可以自己出了?
如果可以,题目要怎么上传?质量如何确定?
这有待考察。
编程系统还是一如既往。
有个小问题:相同分数和做题时间的两个人要比总时间吗?这感觉没意义。
祝越来越好。

第一题 (难度:简单)

题目描述

对K个不同字符的全排列组成的数组, 面试官从中随机拿走了一个, 剩下的数组作为输入, 请帮忙找出这个被拿走的字符串?比如[“ABC”, “ACB”, “BAC”, “CAB”, “CBA”] 返回 “BCA

100分做法

这一题妥妥找规律。我们发现,当 K > 2 K>2 K>2时,全排列每一个位置的各个字母都出现了偶数次。
所以我们直接统计出每一位上哪个字母出现了奇数次,把这个字母输出即可。
听完是不是觉得豁然开朗?awa
C + + C++ C++代码如下:

#include<bits/stdc++.h>
using namespace std;
int a[15][1005]={
   };
int t[105]={
   };
int n,X,Y;
int main()
{
   
	scanf("%d",&n);
	X=1;Y=1;
	while(n!=Y-1)
	{
   
		X++;
		Y*=X;
	}
	for(int i=1;i<=n;i++)
	{
   
		for(int j=1;j<=X;j++)
		{
   
			char ch;
			cin>>ch;
			if(t[0]<X)t[++t[0]]=(int)(ch);//把出现过的字符记录
			a[j][int(ch)]^=1;//找奇数
		}
	}
	if(n==1)return 0*printf("%c%c",t[2],t[1]);//K=2
	for(int i=1;i<=X;i++)
	{
   
		for(int j=1;j<=t[0];j++)
		{
   
			if(a[i][t[j]]==1)
			{
   
				printf("%c",char
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值