语言转换:把c++转换为python
#include <bits/stdc++.h>typedef long long ll;
using namespace std;
int dp;
const int INT_MAX=0x3f3f3f3f;//无穷大
int main()
{
char str1,str2;
cin>>str1>>str2;
int a;//几条边
cin>>a;
for(int i=0;i<26;i++)
{
for(int j=0;j<26;j++)
{
i==j?dp=0:dp=INT_MAX;//同一个边距离为0
}
}
for(int i=0;i<a;i++)
{
char c1,c2;
getchar();//回车?
cin>>c1>>c2;
if(c1!=c2)
dp=1;
}
for(int k=0;k<26;k++)
{
for(int j=0;j<26;j++)
{
for(int i=0;i<26;i++)
{
dp=min(dp,dp+dp);//floyd模板
}
}
}
ll sum=0;//这里要开ll,不然-1的样例会爆
for(int i=0;i<strlen(str1);i++)
{
sum=sum+dp-'a']-'a'];
}
if(sum>=INT_MAX) cout<<"-1"<<endl;
else cout<<sum<<endl;
return 0;
}
本帖最后由 傻眼貓咪 于 2021-12-5 14:14 编辑
dp = [ for _ in range(30)]
INT_MAX = 0x3f3f3f3f
if __name__ == "__main__":
str1, str2 = map(str, input().split())
a = int(input())
for i in range(26):
for j in range(26):
dp = 0 if i == j else INT_MAX
for i in range(a):
c1, c2 = map(lambda x: x, input().split())
if(c1 != c2): dp = 1
for k in range(26):
for j in range(26):
for i in range(26):
dp = min(dp, dp+dp)
sum = 0
for i in range(len(str1)):
sum = sum +dp - ord('a')]-ord('a')]
if sum >= INT_MAX: print(-1)
else: print(sum)
exit() 不知道你的代码是什么东西,也没有参数作为对照参考,我直接从你的代码重新编写 Python 代码,希望对你有帮助 傻眼貓咪 发表于 2021-12-5 14:10
第一行输入字符串a,长度不大于 10001000,只包含小写字母,表示密码箱上的初始文字。
第二行输入字符串b,只包含小写字母,保证长度和第一个字符串相等,表示正确密码。
第三行输入一个整数 n(0<=n<=676.
接下来n行,每行输入两个空格隔开的字符xi,yi,表示操作规则:一次操作能把字符Xi,变换成Yi
输出格式
如果密码箱能被打开,输出最少的操作次数,否则输出-1
样例输入
dabc
dddd
3
a b
b c
c d
样例输出
6
傻眼貓咪 发表于 2021-12-5 14:11
不知道你的代码是什么东西,也没有参数作为对照参考,我直接从你的代码重新编写 Python 代码,希望对你有帮 ...
题目是这样的但是c++运行超时所以想换p试试您刚刚发的那个我试了试第五行报错 chenwhccc 发表于 2021-12-5 15:08
题目是这样的但是c++运行超时所以想换p试试您刚刚发的那个我试了试第五行报错
C++都超时,我觉得python基本没戏
C++的优势不就在这儿吗?
你认为python的运行速度比的过C++ ?
人造人 发表于 2021-12-5 15:22
C++都超时,我觉得python基本没戏
C++的优势不就在这儿吗?
你认为python的运行速度比的过C++ ?
那可能是我算法没学好吧 人造人 发表于 2021-12-5 15:22
C++都超时,我觉得python基本没戏
C++的优势不就在这儿吗?
你认为python的运行速度比的过C++ ?
python报错
ValueError: not enough values to unpack (expected at least 2, got 1) on line 5
是什么意思? chenwhccc 发表于 2021-12-5 15:26
那可能是我算法没学好吧
也许吧
chenwhccc 发表于 2021-12-5 15:27
python报错
ValueError: not enough values to unpack (expected at least 2, got 1) on line 5
是什么 ...
我看不到你写的代码
我能看到的就是这个
python报错
ValueError: not enough values to unpack (expected at least 2, got 1) on line 5
是什么意思?
人造人 发表于 2021-12-5 15:30
我看不到你写的代码
我能看到的就是这个
dp = [ for _ in range(30)]
INT_MAX = 0x3f3f3f3f
if __name__ == "__main__":
str1,str2 = map(str,input().split(':'))
a = int(input())
for i in range(26):
for j in range(26):
dp = 0 if i == j else INT_MAX
for i in range(a):
c1, c2 = map(lambda x:x, input().split())
if(c1 != c2):dp = 1
for k in range(26):
for j in range(26):
for i in range(26):
dp = min(dp, dp+dp)
sum = 0
for i in range(len(str1)):
sum = sum +dp - ord('a')]-ord('a')]
if sum >= INT_MAX:print(-1)
else:print(sum)
exit() chenwhccc 发表于 2021-12-5 15:30
上面那个老哥回复的这个 一般不会有人把 C++ 转换成 Python 的,只有把 Python 转换成 C++(难怪我觉得代码不优,Python 有很多自己的函数 C++ 是没有的)。题目参数要求字符串不超于 10001000(数字极大),我的代码有可能超时:a = input()
b = input()
res = 0
for t, i in enumerate(range(int(input())), start = 1):
x, y = input().split()
res += a.count(x)
a = a.replace(x, y)
if(a == b):
print(res)
else: print(-1, a, b) if a != b else print(res) chenwhccc 发表于 2021-12-5 15:31
上面那个老哥回复的这个
我的 2 楼的代码是你的 C++ 转换成 Python 的产物(明显不能这样做),你试试我重写新的代码(13楼) C++#include <bits/stdc++.h>
#define M 10001000
int main() {
static char a, b;
int n;
std::cin.getline(a, M);
std::cin.getline(b, M);
std::cin >> n;
int res = 0, answer = -1;
for (size_t i = 0; i < n; i++) {
char x, y;
std::cin >> x;
std::cin >> y;
for (size_t j = 0; j < strlen(a); j++)if (a == x) { a = y; res++; }
bool flag = true;
for (size_t j = 0; j < strlen(a); j++) if (a != b) { flag = false; break; }
if (flag)answer = res;
}
std::cout << answer << std::endl;
return 0;
}
页:
[1]