链接http://codeforces.com/problemset/problem/731/A
思路
对两个字母ch1,ch2顺序和逆序走一遍,取较小值
#include<bits/stdc++.h>
char m[]="abcdefghijklmnopqrstuvwxyz";
char c[105];
int make(char ch1,char ch2){
int i,j;
int cnt,cnt1=0,cnt2=0;
for(i=0;i<26;i++){
if(m[i]==ch1){
break;
}
}
// printf("i=%d\n",i);
//shun
for(int j=i;;j++){
if(m[j%26]==ch2){
break;
}
else
cnt1++;
}
//ni
for(int j=i;;){
if(m[j%26]==ch2){
break;
}
else
cnt2++;
j--;
if(j<0){
j=25;
}
}
return cnt1<cnt2?cnt1:cnt2;
}
int main(){
c[0]='a';
scanf("%s",c+1);
//printf("len=%d\n",strlen(c));
int tot=0;
for(int i=0;i<strlen(c)-1;i++)
tot+=make(c[i],c[i+1]);
printf("%d\n",tot);
return 0;
return 0;
}
本文提供了一个解决 CodeForces 731A 问题的算法思路,通过遍历字母顺序来寻找两个给定字符之间的最短路径。采用 C 语言实现,适用于竞赛编程爱好者。

被折叠的 条评论
为什么被折叠?



