您的位置:首页 > 其它

最大映射(今日头条2017笔试)

2017-09-24 12:21 597 查看
开始刷笔试题了~

先放题→→

有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看做一个整数,唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和最大?

输入描述:

每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n , 接下来有 n 行,每行一个长度不超过 12 且仅包含大写字母 A-J 的字符串。 n 不大于 50,且至少存在一个字符不是任何字符串的首字母。

输出描述:

输出一个数,表示最大和是多少。

输入例子1:

2

ABC

BCA

输出例子1:

1875

终于开始试着用python写这种代码了

#-*-coding:,utf-8-*-
num = {'A':0, 'B':0, 'C':0, 'D':0, 'E':0, 'F':0, 'G':0, 'H':0, 'I':0, 'J':0}
iin=eval(input())
in_str=[]
num2s = []
for i in range(iin):
in_str.append(input())
#计算字母权值,根据权值判断字母应对应的数字
for str in in_str:
x = len(str)-1
for alp in str:
if alp == 'A':
num['A'] = num['A']+10**x
elif alp == 'B':
num['B'] = num['B']+10**x
elif alp == 'C':
num['C'] = num['C']+10**x
elif alp == 'D':
num['D'] = num['D']+10**x
elif alp == 'E':
num['E'] = num['E']+10**x
elif alp == 'F':
num['F'] = num['F']+10**x
elif alp == 'G':
num['G'] = num['G']+10**x
elif alp == 'H':
num['H'] = num['H']+10**x
elif alp == 'I':
num['I'] = num['I']+10**x
elif alp == 'J':
num['J'] = num['J']+10**x
x=x-1
#按照权值排序
for i,j in sorted(num.items(),key=lambda ite:ite[1]):
num2s.append(i)
print(num2s)
sum = 0
#求出总和
for str in in_str:
x = len(str)-1
one_n = 0
#求单个字符串的值,用index()查找字母在列表中的位置序号转换为数字
for alp in str:
one_n=one_n+(num2s.index(alp))*10**x
x=x-1
print(one_n)
sum=sum+one_n
print(sum)


写了半天终于弄出来放上去测试结果提示有问题orz

您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为85.00%

测试用例:
50
IAAAHAHCJGBJ
FAAABCABGIFF
FABBJIAGICCG
CAJEAIHBCFIF
CAEBJCGFEEJC
JAJEFADFHHDH
FAFCEDDGBIIH
EACHGBAJJICF
CACECDFDBFFC
BAJADCBDDDCE
JAEFEDICECGH
FAAHGHABHFIC
CAIIAJDHBCDJ
FAIHHJGDEBHA
DAFCHCCDIIDG
HAHAHIIGADGI
IAJECCIDJABD
EACFDDDCCBBA
IAFJFIDFEDGG
IAGIJBIGDIFB
DAFHBFCBJGDB
EACIBEIEGHAH
FAJDHJBIBBCC
BABIACEFHGDJ
JAEAHBABBDIB
FAHJCEAFHHAF
DAHAFCBAJCHE
IAEFCFCIJBBA
FAGEIEJFGGIH
CADBHGCGAJCA
EAJHGGGCCBBC
GAHFEHFHIJAI
CAADICHAJACG
CADFFHIHFCAF
EAIFFIFHAJGI
IAICCJIACEDE
CABJIBGECJEA
DAFGIEFBDGDG
FACDAIIJCJJF
BAAJHJFIHGHD
BAIDCEABEHDD
JAGHGICFHDAI
GACBGJBEJCAJ
GAJDEDBGGFJF
DAHAFEHEJHJD
JAJDEDGJBCBI
CAFGFJEIGFAI
CAHGDEDACGDI
CABACDGJDJHJ
EAFAIDAAFAAI

对应输出应该为:

31563768760690

你的输出为:

32270430830783


暂时没检查出来问题,既然我输出的数更大,应该是答案错了?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: