博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAM的计数法
阅读量:5156 次
发布时间:2019-06-13

本文共 970 字,大约阅读时间需要 3 分钟。

经典的题目了,自己想了个新方法

方法:先从低位往高位找到一个可以加的位数,然后把后面的数变为前面那个数加1

建议先从主程序开始看。
本人蒟蒻,不好请原谅方法:先从低位往高位找到一个可以加的位数,然后把后面的数变为前面那个数加1建议先从主程序开始看。#include#include#includeusing namespace std;int a[26],a1,a2,w;bool add()//加,布尔是用来判断当前是不是最大的数{   int g=0;   for (int i=1;i<=w;i++)   {        if (a[i]!=a2-i+1) {g=i; break;}        //判断该个数是否为当前位置最大的数如果是则判断下一个数        //直到找到不是最大的数的位置。   }   if (g==0) return true;//如果每个位都是最大的数则返回退出   a[g]++;//当前位加1   for (int i=g-1;i>=1;i--)   {        a[i]=a[i+1]+1;//把后面的数变为前面那个数加1   }   return false;}void write()//输出{    for (int i=w;i>1;i--)      printf("%c",a[i]+97+a1-1);    printf("%c\n",a[1]+97+a1-1);}int main(){    scanf("%d%d%d\n",&a1,&a2,&w);//输入不解释    a2-=a1;//求他可以使用的数字数量。    string s;    getline(cin,s);        for (int i=w-1;i>=0;i--)//从低位往高位存    {        a[w-i]=s[i]-97-a1+1;//输入。减a1加1可以方便些,可以不加。    }    for (int i=1;i<=5;i++)//循环输入5个数    {        if (add()) break;//加1        write();//输出    }}

转载于:https://www.cnblogs.com/sslwyc/p/9218663.html

你可能感兴趣的文章
进制转换
查看>>
Linux 下五个顶级的开源命令行 Shell
查看>>
Linux平台中使用PHP让word转pdf
查看>>
03循环结构
查看>>
docker数据卷的使用 -v --volumes--from
查看>>
电磁兼容培训文稿
查看>>
初始化 静态代码块1
查看>>
shell 实现txt转换成html
查看>>
sqlserver 2008修改数据库表的时候错误提示“阻止保存要求重新创建表的更改”...
查看>>
53. (待补) (使用单链表)实现简单的管理系统 MVC 将链表作为内存数据模型,将文件作为数据库,将终端作为交互界面。读文件生成 链表,修改链表写入文件。...
查看>>
【JZOJ4811】【NOIP2016提高A组五校联考1】排队
查看>>
SqlServer数据组织结构
查看>>
HTMLTESTRunner自动化测试报告增加截图功能
查看>>
自定义注解判空简单示例
查看>>
squid,nginx,lighttpd反向代理的区别
查看>>
利用 Apache 为个人用户创建 web 站点及其报错处理
查看>>
java编程思想第四版第十八章总结
查看>>
查询分页
查看>>
C# 读取excel
查看>>
关于单行和多行文本溢出显示省略号的解决方案
查看>>