UVa1339_Ancient Cipher(古老的密码)
题目:
题目描述: 给定两个长度相同且不超过100的字符串,判断是否能把其中一个字符串的各个字母重排,然后对26个字母做一一映射,使得两个字符串相同。例如,JWPUDJSTVP重排后可以得到WJDUPSJPVT,之后把每个字母映射到它的前面一个字母,得到VICTORIOUS,输入两个字符串,输出YES或者NO。
分析:
因为字母可以重排,所以位置不重要,而字母出现的次数是重要的。这样先统计一下两个字符串中各个字母出现的次数,然后进行排序,只要两个数组排序后的结果相同,那么输入的两个串就可以通过重排和一一映射变得相同。
我的代码:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
int x[110],y[110];int main()
{char a[110],b[110];scanf("%s%s",a,b);int n=strlen(a);char ch;char z[110];for(int i=0;i
代码简化:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
int x[110],y[110];int main()
{char a[110],b[110];scanf("%s%s",a,b);int n=strlen(a);for(int i=0;i
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
