一个字符串编码问题的程序解决

C#批量转换unicode编码 前段时间在网上下了一个程序,通过反编译得到源代码,但是中文全部都成了 /u68c0/u6d4b/u5230/u7cfb了字符串,看不明白,需要转换成中文,所以我写了小程序主要实现的代码如下:得到单个字符的值        /**////         /// 得到单个字符的值        ///         ///         ///         private u 阅读详情

原题:
/*
描述
为了最大程度地节约存储空间,经常需要把信息进行编码。一种很有效的编码方法是用数字来表示一串字符。假设这些字符串都是由不重复的英文小写字母组成的,且每个字符串中的英文字母都是从小到大排列的。
这个编码系统按照如下的方式工作:
字符串是按照长度从小到大的顺序排列的
长度相同的字符串,是按照字典需排列的
则根据这个编码系统,所有的字符串从 a 开始可以编码如下:
a - 1 b - 2 … z - 26 ab - 27 … az - 51 bc - 52 … vwxyz - 83681 …

那么,请编程计算出一个字符串在这个编码系统下编码后的值是多少。
输入
输入的第一行为 N,表示有 N 组数据。后面的 N 行每行包含一个不超过 10 个字母的字符串。
输出
输出字符串所对应的编码,如果该字符串不能被编码,则输出 0。
测试用例 1 以文本方式显示
1
bf
以文本方式显示
55

*/

解决代码:

#include<stdio.h>
#include<string.h>
#include <iostream>
#include <math.h>

using namespace std;
long long t[10][26]= {0};    //查表,将最简形式的编码事先准备好 
/*

行号:  0   1    2    3    4   ...   24   25 
列号:0 a    b    c    d    e    ...   y   z  
      1 ab   bc   cd   de   ef   ...   yz  zz
      2 abc  bcd  cde  efg  ghi  ...   xyz zzz
      3
      4
      ...
      9 abcdefghij  .....           qrstuvwxyz ...zzzzz
*/
void init_table()
{
    int i,j;
    for(i=0;i<26;i++)
    {
        t[0][i]=i+1;  //对应的是 a/b/c/.../z的编码是1-26; 
    }

    for(i=1;i<10;i++)
    {
        t[i][0]=t[i-1][25]+1;  //abc 总是等于上一行(降阶) yz  +1 
        for(j=1;j<26-i;j++)
        {
            t[i][j] =  t[i][j-1] + 1 + t[i-1][25] - t[i-1][j];
            //cde - bcd = byz + 1 - bcd = 1 + yz - cd 

        }
        for(j=26-i;j<26;j++)
        {
            t[i][j]=t[i][j-1]; //因为z2、y3这些不合法,所以无增加编码,都是和前面的最简式子一样的数 
        }

    }

    return;
}
long long  lookup(char *sNum)
{
    /*
    举例: 
    bdfxz = b4 - c3 + d3 - e2 + f2 - g1 +x1 - y0 +z0

    */
    long long ret =0;
    int i,j;
    char *p = sNum;
    int n = strlen(p);
    while(n>1)
    {
        i = n-1;
        j = *p - 'a';
        ret = (t[i][j] - t[i-1][j+1]) + ret;
        n--;
        p++;
    }
    ret += t[0][*p-'a'];

    return ret;

}
int main(void)
{
    int i,j,k;
    char s1[80]="vwxyz";
    //Soloe@csdn 欢迎转载,但请保留 
    init_table();

    int n;
    cin>>n;
    while(n>0)
        {
            cin>>s1;
            cout<<lookup(s1)<<endl;
        }

    return 0;
//Soloe@csdn 欢迎转载,但请保留
}
倍福 MODBUS TCP/IP通信 (*默认字符串80字节,此处声明为255字节,可以一次性传42个UINT数据.5位整数加一个空格,即每个数据6字节*)(*---------------------------------------- 以下为用户程序 ----------------------------------------*)(*读回并换算后的值*)(*准备写到PLC的值*)(*用于比较两次读回的值相差多少,以估计通讯的速度, Act_CalcDiff*)(*用于切换读和写,Act_Protocal*) 阅读详情

相关推荐

FPGA AXI DDR3读写时序调试与FIFO缓存实战解析

本文深入解析FPGA中AXI协议与DDR3的读写时序调试,重点探讨FIFO缓存在数据流控制中的关键作用。通过实战案例详细讲解突发传输中的地址对齐、数据分片等常见问题,并提供状态机设计、仿真波形分析和性能优化技巧,帮助开发者高效解决高速数据存储场景下的时序同步与数据一致性问题。

blockchain9miner的博客 1118

H19编码(北理编程题目)

H19:编码(选作) 成绩 5 开启时间 2021年11月1日 星期一 08:00 折扣 0.8 折扣时间 2021年11月22日 星期一 23:55 允许迟交 否 关闭时间 2021年11月29日 星期一 23:55 描述 为了最大程度地节约存储空间,经常需要把信息进行编码。一种很有效的编码方法是用数字来表示一串字符。假设这些字符串都是由不重复的英文小写字母组成的,且每个字符串中的英文字母都是从小到大排列的。 这个编码系统按照如下的方

cv7xz的博客 1541

S905L3B机顶盒刷Armbian:从安卓Root到eMMC全攻略

在嵌入式开发与轻量级服务器搭建中,ARM架构设备因其低功耗和高性价比备受关注。晶晨S905L3B作为运营商机顶盒的主流芯片,通过刷写Armbian系统可将其改造为ARM小服务器。其原理是利用Amlogic芯片的uboot引导机制,将Linux系统写入eMMC存储,从而脱离原厂安卓限制。这一方案的技术价值在于以极低成本实现Docker容器、下载机、轻量数据库等服务的部署,应用场景涵盖家庭网络广告过滤、智能家居控制、复古游戏机等。本文以CM311-1S为例,详细拆解从安卓9 Root到Armbian写入eMMC

weixin_31476015的博客 340

编码

编码 编码 描述 为了最大程度地节约存储空间,经常需要把信息进行编码。一种很有效的编码方法是用数字来表示一串字符。假设这些字符串都是由不重复的英文小写字母组成的,且每个字符串中的英文字母都是从小到大排列的。 这个编码系统按照如下的方式工作: 字符串是按照长度从小到大的顺序排列的 长度相同的字符串,是按照字典需排列的 则根据这个编码系统,所有的字符串从 a 开始可以编码如下: a - 1 b - 2...

SChenlyx 1103

基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案分享

各位FPGAer周末愉快,今天熊猫君分享一个基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案。

haoxingheng的专栏 1445

单片机控制双向可控硅的5种实用触发电路设计(附完整电路图)

本文深入解析了单片机控制双向可控硅的5种实用触发电路设计,涵盖从基础隔离到复杂负载驱动的实战方案。重点探讨了光电耦合器选型、过零检测同步、RC吸收电路精密计算以及应对感性负载和高噪声环境的加固策略,并提供了完整的电路图与调试避坑指南,旨在帮助开发者实现安全可靠的交流负载控制。

joy55的博客 2209

2021-04-21

91. 解码方法 难度中等765 一条包含字母A-Z的消息通过以下映射进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 要解码已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106"可以映射为: "AAJF",将消息分组为(1 1 10 6) "KJF",将消息分组为(11 10 6) 注意,消息不能分组为(1 11 06),因为"06"不能映射为"F",这是由于"...

weixin_43762576的博客 228

Modelsim 安装步骤详解

Modelsim 安装步骤详解目录一、modelsim简述及下载1、简介及特点2、modelsim版本3、modelsim下载二、安装步骤详解三、注册简述四、总结与参考资料1、总结2、参考资料 目录 本篇文章主要对Modelsim SE版本安装步骤的介绍。 一、modelsim简述及下载 1、简介及特点 简介 modelsim是Mentor公司开发的优秀的HDL语言仿真软件。 它能提供友好的仿真环境,采用单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术和单

执迷不悟 15万+

字符串p型编码

描述 给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431;类似的道理,编码串101可以用来描述1111111111;00000000000可描述为"11个0",因此它的p型编码串即为110;1002...

lzx's blog 2188

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1877

STM32 使用IQmath实现SVPWM

文章目录SVPWMIQMATHIQmathLib测试部分程序附件 SVPWM SVPWM是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称,通常由三相逆变器的六个功率开关管组成,经过特定的时序和换相所所产生的脉冲宽度调制波,最终输出的波形可能会十分接近理想的正弦波形。 具体如下图所示;左侧为复平面,即空间矢量,右侧为时域的正弦波形; 关于SVPWM原理的文章非常多,这里可以推荐一下网上一个非常不错的教程《SVPWM的原理及法则推导和控制算法详解第五修改版》,

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

编码方法

有一种码叫做变长码日常生活里面我们能感受到,有些文字用到次数非常多,比如“好的”,有些文字就用到特别少,比如“逼仄”之类,那么在编码的时候也要略加考虑,经常用的文字,它的编码要尽量短一点,不常用的可以长一点,这就导致了变长码的出现,实际应用中都是使用变长码的,因为它效率高。如何编码才算“好”我们对最佳编码的规定是:平均码长最小。插播一则挺重要的知识,唯一可译码的判别准则在教材126页例5.4.1里面

Clifnich 918

总结目前开源的视频生成/视频编辑大模型

随着Sora的爆火,视频生成和视频编辑受到了越来越多的关注。这篇博客总结一下目前开源的视频生成和视频编辑的大模型,并分析他们各自的优缺点,以及在自己进行科研任务或者工作中应该如何选用对应的开源模型,希望能给从事这一领域研究和使用的小伙伴们帮助。

沉迷单车的追风少年 3544

Qt5程序参数包含中文GBK编码的问题

1、背景 Qt5程序(WeekReport.exe)的main函数里有如下代码: //only for test int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); if ((argc <= 1) || !QFileInfo::exists(argv[1]))...

weixin_30776545的博客 502

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

如何输出某种编码的字符串,比如ISO-8859-1?

public class Atranslate {         public static void main(String[] args) {           String str = "aa" ;           str =translate( str) ;           System.out.print(str);     }     private st

许高鹏的博客 2457

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

字符串的编码解码问题

import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Arrays; /* 编码: byte[] getBytes(String charsetName):使用指定的字符集将该String 编码为一系列字节,将结果存储到新的字节数组中 解码: String(byte[] bytes):通

m0_51765675的博客 224

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

GBK编码和UTF-8编码互转的大坑

  这几天遇到一个BUG,问题很简单,解决却花了3、4天,特意记录下来。   linux环境下,将默认编码设置为GBK以后,运行GBK编码的脚本,调用一个Java的jar包,然后总jar包中返回GBK字符串。但是不知道是哪里出了问题,返回的参数一直是问号乱码。   放上脚本代码: #!/bin/bash #str="\"$1 $2 $3\"" str=...

donggou7958的博客 684

ruby正则表达式中的编码问题

问题描述: 用ruby写一个抓网页分析的小程序,用

闪刀浪子 925

括号编码

括号编码 Time Limit : 1000 MS Memory Limit : 65536 KB Description S = s1 s2...s2n 是一个符合格式的括号的字符串,S能按下面两种方式编码: P编码:编码是一个整数序列P = p1 p2...pn,pi是第i个右括号之前的左括...

weixin_30747253的博客 562

java/jsp/sql server项目 字符编码统一_JSP开发过程遇到的中文乱码问题及解决方案...

对于程序猿来说,乱码问题真的很头疼,下面列举几种常见的乱码。1.数据库编码不一致导致乱码解决方法:首先查看数据库编码,输入:showvariableslike"%char%";确认编码一致,如果不一致,可输入:SETcharacter_set_client='utf8';SETcharacter_set_connection='utf8';SETcharacter_set_result...

weixin_35181426的博客 276

如何解决在DOS编译java类时出现的“错误: 编码GBK的不可映射字符”

进来研究火龙果大大的控制台读取字符串,代码如下: import java.io.Console; public class ReadConsole { public static void main(String[] args) { String str = readConsole("请输入:"); System.err.println(str); } public

不懂不懂 1747

编码问题

一般的编码解码定义以及使用 联通问题

qq_34123420的博客 349

文本处理中unicode字符65279(ZERO WIDTH NO-BREAK SPACE)遇到的问题

代码中有一个功能需要将从其他模块返回值中读取的字符串转化为int值(例如:字符串"12345"转化为int值12345,试用java Integer.parseInt()函数即可),但是在程序测试中出现异常[code="java"]java.lang.NumberFormatException: For input string: "118158" at java.lang....

grow up 1194

base64编码加密

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET

何淑贤 669

qt & qt creator 中文字符串查找问题

<br />用qt creator 直接写了一个程序,显示中文没有问题,<br />但是在查找字符串的时候<br /> <br />QString indexof 方法如果查找的是中文就一直返回-1 查找不到,说明QString内部的编码和tr以后的编码不一样<br /> <br />搜索了半天,发现要在qapplication里面预先设置编码。<br /> <br />设置默认的QString的编码和tr的编码一致就可以了。<br /> <br />QApplicationa(argc,argv);<br

简单,就是他 4392

DOS系统里JAVA是gbk格式还是_如何解决在DOS编译java类时出现的“错误: 编码GBK的不可映射字符”...

进来研究火龙果大大的控制台读取字符串,代码如下:import java.io.Console;public class ReadConsole {public static void main(String[] args) {String str = readConsole("请输入:");System.err.println(str);}public static String readCons...

weixin_42382703的博客 89
上一篇: 也谈C/C++中的位域
下一篇: 一道逻辑推理题的C++实现
Soloe
博客等级 码龄21年 14粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值