字母重排(字符串处理)

题目信息如下:

题意分析:

快速方法就是将字母先重排几次,然后在与输入的重拍后的数据进行比较,快速简单。

代码如下:(此解法详解析参考《算法竞赛入门》)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int n;
char a[2020][10],s[2020][10];
int cmp(const void *a,const void *b)
{
	return *(char *)a-*(char *)b;
}
int cmp1(const void *a,const void *b)
{
	char *c=(char *)a;
	char *d=(char *)b;
	return strcmp(c,d);
}
int main()
{
	n=0;
	for(;;)
	{
		scanf("%s",s[n]);
		if(s[n][0]=='*')
		{
			break;
		}
		n++;
	}
	qsort(s,n,sizeof(s[0]),cmp1);
	for(int i=0;i<n;i++)
	{
		strcpy(a[i],s[i]);
		qsort(a[i],strlen(a[i]),sizeof(char),cmp);
	}
	char t[10];
	while(~scanf("%s",t))
	{
		qsort(t,strlen(t),sizeof(char),cmp);
		int found=0;
		for(int i=0;i<n;i++)
		{
			if(strcmp(t,a[i])==0)
			{
				printf("%s ",s[i]);
				found=1;
			}
		}
		if(!found)
		printf(":(");
		printf("\n");
	}
	return 0;
}
时间: 2024-10-29 19:06:27

字母重排(字符串处理)的相关文章

5.3.2 字母重排

输入一个字典(用******结尾),然后再输入若干单词.每输入一个单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出:().输入单词之间用空格或空行隔开,且所有输入单词都由不超过6个小写字母组成.注意,字典中的单词不一定按字典序排列.样例输入:tarp given score refund only trap work earn course pepper part ******resco nfudre aptr sett o

Algorithm --&gt; 字母重排

字母重排 输入一个字典(用***结尾),然后再输入若干单词.没输入一个单词w,都需要在字典中找出所有可以用w的字幕重排后得到的单词,并按照字典序从小到大的顺序在一行中输出,如果不存在,输出“:(”.单词间用空格隔开,且所有输入单词都由不超过6个小写字母组成. 样例输入: tarp given score refund only trap work earn course ***** aptr asdfg 样例输出: part tarp trap :( 程序: #include <iostream

51nod 2485 小b重排字符串

小b有一个字符串S,现在她希望重排列S,使得S中相邻字符不同. 请你判断小b是否可能成功. 样例解释:将"aab"重排为"aba"即可. 收起 输入 输入一个只包含小写字母的字符串S,其长度n满足1≤n≤500 输出 如果可能,输出"Possible": 否则,输出"Impossible". 输入样例 aab 输出样例 Possible 只要同一种字母不超过总数的一半即可,保证能交叉放开.代码: #include <io

POJ 3250:字母重排

AC CODE: import java.util.Scanner; public class Main { private static char[] ASCII = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' }; private static String getString() { Scanner input = new

算法篇——字母重排

来源:<算法竞赛入门经典>例题5.3.2 题目:输入一个字典(用******结尾),然后再输入若干单词.每输入一个单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(  如果不存在,输出:(  ).输入单词之间用空格或空行隔开,且所有输入单词都由不超过6个小写字母组成.注意,字典中的单词不一定按字典序排列. 样例输入: tarp given score refund only trap work earn course pepper part

字母重排

输入一个字典(用******结尾),然后再输入若干单词.每输入一个单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出:().输入单词之间用空格或空行隔开,且所有输入单词都由不超过6个小写字母组成.注意,字典中的单词不一定按字典序排列. 样例输入: tarp given score refund only trap work earn course pepper part ****** resco nfudre aptr set

C#判断字符串是否存在字母及字符串中字符的替换实例

本文实例讲述了C#判断字符串是否存在字母及字符串中字符的替换的方法.分享给大家供大家参考.具体实现方法如下: 首先要添加对命名空间"using System.Text.RegularExpressions;"的引用 下面以一个字符串为例: 代码如下: string ss = "aaZ31 dd2f3"; string sss = ss.Replace(" ", "");//将字符串ss中的空格去掉 string sss2 =

【Teradata SQL】从中文数字字母混合字符串中只提取数字regexp_substr

目标:从中文数字字母的字符串中只提取数字 sel regexp_substr('mint choc中文11国1','\d+') 原文地址:https://www.cnblogs.com/badboy200800/p/10792095.html

JavaScript如何生成随机字母数字字符串

如何使用javascript生成随机字母数字字符串?下面本篇文章就来给大家介绍一下使用JavaScript生成随机字母数字字符串的方法,希望对大家有所帮助. 方法一:Math.random()方法和Math.floor()方法 ● 创建一个函数,该函数有两个参数,一个参数是我们想要生成的字符串的长度,另一个参数是我们想要在字符串中显示的字符. ● 声明新变量ans = ' '. ● 使用for循环以相反的顺序遍历字符串. ● 使用JavaScript的Math.random()方法生成随机字符串