北邮c语言oj答案,北邮OJ

输出样例

2

3

分析:两个for循环枚举输入的每组数据中的每个字符到达每个字符的花费,然后比较求出最小值输出。

//翻了个错误,只意识到向后转换没有意识到向前也可以转换,这两个中选花费最少的

//#define min(a,b) a

//最小值得求法 min(abs(i-j),26-abs(i-j));

#include

#include

#include

//#include

#define min(a,b) a

using namespace std;

int main ()

{

string mystr;

int n;

int m[1001];//暂存数据

char mych = NULL;

int cost;

int mymin;

int myout[101];

cin >> n;

for (int i_1 = 0;i_1 < n;i_1++)

{

cin >> mystr;

//计算每一个字符的花费,最后比较选出最小

for (int i_2 = 0;i_2 < mystr.length();i_2++)

{

//if (mych == mystr[i_2])//已经有过这个字母了,不需要继续比较了

//{

//continue;

//}

mych = mystr[i_2];

cost = 0;

for (int i_3 = 0;i_3 < mystr.length();i_3++)

{

cost += min(abs(mystr[i_3] - mych),26-abs((mystr[i_3] - mych)));//计算出每一个单词的花费

}

m[i_2] = cost;//暂存一组数据中每个单词的最小花费

//cout <

}

//cout << m[0]<< m[1]<< m[2]<

//比较,选出改组的最小值

mymin = m[0];

for (int i_4 = 1;i_4 < mystr.length();i_4++)

{

if (mymin > m[i_4])

{

mymin = m[i_4];

}

}

//cout << mymin <

myout[i_1] = mymin;

//cout << sizeof(m)/sizeof(m[0]) <

}

//输出结果

for (int i_5 = 0;i_5 < n; i_5++)

{

cout << myout[i_5] <

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值