java编写一个算法,一个数用数组表示,执行加1操作,之后的数组用一个数表示。

用java编写一个算法,一个数用数组表示,执行加1操作,之后的数组用一个数表示。

2个回答

数组可以表示很多数的…你说,用一个数表示啥意思??

你应该是想要下面的实现。如果有用请采纳。

import java.util.ArrayList;
import java.util.List;

public class TestMain {

public static void main(String[] args) {

    // 递归实现,10进制累加
    // 数:123,累加次数(加1):878
    System.out.println(new TestMain().startIncrement(123, 878));

}

public int startIncrement(int value, int incrementCount) {

    // 把一个数份成数组表示,从低位到高位顺序存储
    String[] ss = String.valueOf(value).split("");
    List<Integer> list = new ArrayList<Integer>();
    for (int i = ss.length - 1; i >= 0; i--) {
        if (!ss[i].isEmpty()) {
            list.add(Integer.valueOf(ss[i]));
        }
    }

    // 累加N回
    int retValue = 0;
    while (incrementCount > 0) {
        incrementCount--;

        // 递归实现,从低位开始加算(最低位index:0)
        retValue = increment(list, 0);
    }

    return retValue;
}

// 递归方法(1次加1动作)
public int increment(List<Integer> list, int index) {

    // 进位时,没有超过最高位
    if (list.size() > index) {

        // 求10进制余数
        int mod = (list.get(index).intValue() + 1) % 10;

        // 余数分配给当前位
        list.set(index, Integer.valueOf(mod));

        // 余数是0,说明有进位,则向高位递归
        if (mod == 0) {
            increment(list, ++index);
        }
    } else {

        // 进位时,超过最高位,追加一个最高位
        list.add(new Integer(1));
    }

    // 1次加1动作后的结果,从高位到低位连接后,再变换成数值
    StringBuilder sb = new StringBuilder();
    for (int i = list.size() - 1; i >= 0; i--) {
        sb.append(list.get(i));
    }

    return Integer.parseInt(sb.toString());
}

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用数组表示二叉树
传统的二叉树是使用链表的形式,其优点是便于插入和删除,但是查找速度很慢,占用空间也很大.所以现在用数组的形式来构建二叉树,节点存在数组中,而不是由引用相连,节点在数组中的位置对应它在树中的位置,下标为0 的节点为根节点,下标为1是根的左节点,2为根节点的右节点,依次类推,从左到右的顺序存储树的每一层,包括空节点.如下图:
用数组表示表格
一组动态生成的表格,各不相同,例如可能是3*4或者4*3,rn如何用二维数组来表示这些表格呢?rnrn这些数组定义的时候该如何初始化?
用指针表示数组
用指针表示二维数组:int a[3][2] = {1, 2, 3, 4, 5, 6};                                     int i, j;                                     for(i=0; i                                     {                      
将一个数用2的幂次方和表示
1.题目描述: 将非负十进制整数n转换成b进制。(其中b=2~16) 2.解题思路: 给定一个数n,通过每次求余b,依次得到转换为对应b进制的逆序序列。 (1)当b&lt;=10时,按照上述说法依次执行,用n求余b,存放在字符数组中, 然后n除以b,直到n为0. (2)当b&gt;10时,若n求余b大于9,要表示成A,B,C,D,E,则在这种情况下, 对于求余的结果做’A’+(mod%10)的处...
科学计数法表示一个数的问题
比如rndouble d = 0.002434;rnd.ToString("E2");rn表示为2.43E-003rn我想让它表示为rn2.43E-3,即指数后面只保留一位,把E后面的-003显示成-3怎么写啊?
短除法表示一个数
一、问题 将一个正整数分解成若干个质因数的积的形式,例如4620=2*2*3*5*7*11 二、程序源码 思路:从2开始,先判断是不是素数,如果是再判断是不是因子,如果还是,就将这个数存入数组之中;最后统一输出 #include &amp;lt;stdio.h&amp;gt; #define N 20 int Factor(int,int *); int Check_prime(int); /* ...
用一个数表示两个数的数学表达式
已知两个整数X,Y,经过某种四则运算F1后可得到整数C。rn如果知道这个整数C,经过某种四则运算F2后可得到唯一的一组X,Y。rn请问这样的两个运算F1,F2是否存在,是什么样的表达式?rn
用 隔开的1围数组怎么表示?
用 隔开的1围数组怎么表示?rnstr=111 222 333 444rns_str = new Array(???)
数组的十六进制表示算法
有以下数据想用十六进制表示:rn rn第一行 0,0,0,0,1rn第二行 0,0,0,0,1rn第三行 0,0,0,0,6rn第四行 0,0,0,0,5rn第五行 0,0,0,0,10rn第六行 0,0,0,0,20rn第七行 0,0,0,0,4rnrn第一列为正整数,第二列为0或者1,第三列为正整数,第四列为0或者1,第五列为正整数,行数不限。rn要求:转换后的十六进制数尽量少。根据转换后的十六进制数,可以还原以前的数组。rn假如上面的数组转成这样的十六进制:51 94 67 0b 38 19 4a 56 97 60,那么,可以把51 94 67 0b 38 19 4a 56 97 60还原成rn0,0,0,0,1rn0,0,0,0,1rn0,0,0,0,6rn0,0,0,0,5rn0,0,0,0,10rn0,0,0,0,20rn0,0,0,0,4rnrn有没有方法可以做到这点?谢谢rnrnrn
数组求和用指针表示。。。。
下面这段代码,是一个例子。2维数组的。要求不使用数组下标,而是使用指针进行计算。rn我思考去思考来,必须得用下标呀;指针咋样不用for循环,直接计算呢》?rnrnrn[code=C/C++]#includern#define MONTHS 12rn#define YEARS 5rnint main(void)rnrn const float rain[YEARS][MONTHS]=rn 4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6,rn 8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3,rn 9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4,rn 7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2,rn 7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2rn ;rn int year,month;rn float subtot,total;rnrn printf(" YEAR RAINFALL (inches)\n");rn for(year=0,total=0;year
【奇技淫巧】用字符串表示数组
【奇技淫巧】用字符串表示数组 c++将整数转化为字符串有多种实现方法,通常是自己手动实现,也可以用stringstream,atoi,sprintf。但是我最近发现了一个用字符串表示数组的方法,赶紧来告诉大家 先来复习下整数和字符串的转化 头文件&lt;stdlib.h&gt; atoi:字符串 - &gt; 整数 #includ...
汉字用数组表示问题
想请教一个问题.osddisstring(1,2,"语言中文")在定义一个数组char array[5][2]= 语","言","中","文",";各在存储空间中占rn了一个地址code const unsigned address[] =0x0b,0x0c,0x0d,0x0e;我要怎样才能知道语对应0x0b,言对应0x0c...rn
用C++编写的可识别一个数是不是科学记数法表示
用C++编写的可识别一个数是不是科学记数法表示,亦可识别实数
计算一个数的二进制表示中1的个数
二进制 1的个数
一个数的二进制表示中1的个数——10
实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,将9表示成二进制为1001,有2位是1,因此如果输入数字9,该函数输出2。    如果让我们将一个十进制的数转换成二进制的表示,我们就会不停的模除模除2取它的余数,因此,就可以用这样的方法解决:#include using namespace std;size_t count_one_num(int n){    size_t cou
如何求一个数的二进制表示的1的个数
最常见的方法 int Fun1(int N) { int num=0; for(int i=0;i<8;i++) { if(N%2==1) num++; N=N/2; } return num;}2.改进的位运算int Fun2(int N) { int num=0; for(int i=
数组的表示方法 Java
Java中定义数组的几种方式 1.int[]   h2.int  a[] 3.imt[] a={1,2,3,4,5,6,7} 数组的长度可以用length来看  如:a.length 但是length()是来测试字符串的长度的 如果使用基本类型定义数组例如 import java.util; pubic class  Text{ int a[]; Rabdom rand=new...
用折半查找法找到数组中的一个数
用折半查找法找到数组中的一个数 #include&amp;lt;stdio.h&amp;gt; int main(){ int arr[] = { 2, 2, 3, 5, 6, 5, 6, 1, 8, 9, 7 }; int left = 0; int right = sizeof(arr) / sizeof(arr[0]) - 1; int key = 8; int mid = 0; while ...
Python实现一个数组除以一个数
如果直接用python的一个list除以一个数,会报错: a = [1.0, 1.0, 1.0] c = a/3 print(c) TypeError: unsupported operand type(s) for /: 'list' and 'int' 使用Numpy可以轻松做到: import numpy as np a = np.array([1,1,1]) c = a/3 ...
数组和求一个数的整除
一、如何申明一个二维数组?rn二、用什么得到数A的整除。像VBSCRIPT的 I MOD 2 一样
数组中查找一个数
class Demo33 { public static void main(String[] args)  { //查找一个数在数组中第一次出现的下标,不存在输出-1。 int[] arr = {12,4,23,45,8,23}; int key = 2; int index = find(arr,key);            System.out.println("inde
数组中插入一个数
问题描述             在数组a[5]={35,12,24,42}插入一个33,位于数组a[2]的地方。
得到数组的最后一个数
得到数组的最后一个数
在数组中插入一个数
有一个已排好序的数组,今输入一个数。要求按原来的排诹的规律将它插入数组中。rn#include rnvoid main()rnrn int a[40],k,,i,n; /*数组a为已排好序的数组*/rn scanf("%d",&n); /*n为输入的数*/rn for (i=0;i<40;i++)rn if(n>a[i]&&n
407-数组表示的整数+1
3.23 讲道理,我这个真的不是什么优秀的代码。 但是也奇迹般的A 了, public class Solution { /** * @param digits a number represented as an array of digits * @return the result */ public int[] plusOne(int[]
用Java编写一个数组里的最大数值
用Java编写一个数组里的最大数值
编写一个函数。求一个数的二进制表示中的1位的个数
/******************************** 编写一个函数。求一个数的二进制表示中的1位的个数, 例如9的二进制表示位1001,1位的个数为2 *********************************/ #include &amp;lt;iostream&amp;gt; using namespace std; int main() {     int n;     int ...
数组用指针表示时的区别与相同
数组int c[3][3];为什么c,*c的值相等,(c+1),(*c+1)的值不等,c, *c ,**c,代表什么意思? (1)c与*c的值相等的原因在于:c表示的是数组的首地址而*c指的是第一行数组的地址, 二者指向了相同的元素的地址所以他们的值是相等的。 (2)c+1表示的是第二行数组的首地址       *c+1表示的是第一行第二个元素的地址 (3)**c表示的是二维数组的第一个
用数组表示二叉树,怎么做呢?
我已经写好了用先序和中序建立一个二叉树,但将构造生成的二叉链表存储的二叉树转换为一维数组存储的二叉树,输出这个数组包含的元素中间以空格分隔,如遇到空值输出NULL。rn例如,给定一棵二叉树rn a rn / \ rn b c rn / \ rnd frn输出: a b c d null null frnrn不会写!!求解!!!rn贴一段我写的代码:rn#include rnrnusing namespace std;rnrnstruct BiNodernrn char data;rn BiNode *lchild, *rchild;rn;rntypedef BiNode *BiTree; rnrnint CreateBiTree(BiTree &T, const char *s1, const char *s2, int len)rnrn if (len<=0)rn rn T = NULL;rn return 1;rn rn elsern rn T = new BiNode;rn T->data = *s1;rn int i;rn for ( i=0; ilchild, s1+1, s2, i);rn CreateBiTree(T->rchild, s1+i+1, s2+i+1, len-(i+1));rn rn return 1;rn
用byte 数组 在picture box 表示图像
有一个byte数组·displaybuffer[65368],怎么将他做成grayscale图片放到picture box里面显示出来,希望具体点。rnrn网上找了很多中方法,memorystream 会说参数无效。。rnrn求详细具体解决方法rn
如何把组件用数组的形式的表示
各位:rn  有Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,Edit7,Edit8,对各edit赋为空值时:如何使得不用edit1.text:='',edit2.text:='',...edit8.text:=''.而是用数组的形式来实现。
1494 用*结构体来表示数组
Description 有如下结构体定义: typedef struct { int length; int array[MAX_SIZE]; }ARR_TYPE; 其中,length表示数组中实际元素的个数,array[]用于存储length个数据,MAX_SIZE表示数组的最大长度。 要求编写如下两个函数: int input_arr(ARR_TYPE *arr); 用于按照样例给定的格式输...
用指针表示数组的地址与值
/*int a[10];    int *p = a;    p表示a这个数组的首地址,p == &amp;amp;a[0];    p+i,a+i都表示这个数组的第i+1个值的地址,==&amp;amp;a[i];    *p表示a[0]的值,*p = a[0];   指针法: *(p+i),*(a+i)都表示这个数组第i+1个值,==a[i];                                 ...
王朝 第十四周 用数组表示进制转化
#include #include int main() { int a[20],i=0,n,j; scanf("%d",&n); do { a[i]=n%2; n=n/2; i++; } while(n!=0); for(j=i-1;j>=0;j--) {
堆的实现-用数组表示的完全二叉树
堆时一种具有优先级的队列,取出元素的顺序按照元素的优先级 堆若用数组和链表,二者的插入时间复杂度为O(1),删除时间复杂度为O(N) 若用有序数组或有序链表,插入操作所需时间均为O(N),删除操作所需时间复杂度为O(1) 更为理想的堆实现方式为:用数组表示的完全二叉树. 另外将该完全二叉树调整为任何父结点都比左子树和右子树的元素大(最大堆) 我们来看以下这样实现的好处: 插入操作:
HDU1067 Gap( BFS+ HASH 剪枝,矩阵用一个数表示)
题意:在4*8 的图中,给你4种类型的牌,每种牌序号1-7,比如42表示第4种牌的第二张,现在给你4*7一共28张,同时最左边的一列开始空的,第一步你要做的是把每种类型的1号牌从上到下放在这列空的位置上,然后在新出现的空位置,你要挑选空位子左边的那张牌的后继,如果没有的话,就不能操作。 解法:题目的状态很多,还有要怎么表示一个状态已经搜索过了呢。那就把矩阵做一下转化,把当前矩阵按行展开,以2为基数
请教一个数组表示问题
程序如下:rnrn[code=C/C++]rnmain()rnrn char s[ ]="man";rn int i;rn for(i=0;s[ i ];i++)rn printf("\n%c%c%c%c",s[ i ], *(s+i), *(i+s), i[s]);rn getchar();rnrn[/code]rnrn很奇怪为什么还可以用 i[s] 这种表示方法,实在是没明白,请教大侠,谢谢!
提问一个数组表示的问题
数组如下:rn 'news',rn'accfields' => 'ClickNum,KeyWord,Title,Author,Source,Content'rn);rn?>rnrn请教这个数组里面的如title这样的元素能不能表示成象这样的:$config[accfields][2]。当然这样表示可能不对。我的意思是里面的元素能最终以数字定位。rnrn请指点如何表示,谢谢
在已知数组中 插入一个数
#include rn//#define N 5rnrnint main()rnrn int i,j,num,end,tmp1,tmp2;rn int a[6]=10,40,50,60,80;rn printf("Array a:\n");rn for(i=0;i<5;i++)rn printf("%4d",a[i]);rn printf("\n");rn printf("Insert data:\n");rn scanf("%4d",&num);rn end=a[4];rn if(endnum)rn rn tmp1=a[i];rn a[i]=num;rn for(j=i+1;j<6;j++)rn rn tmp2=a[j];rn a[j]=tmp1;rn tmp1=tmp2;rn rn break;rn rn rn rn printf("Now array a:\n",a[i]);rn for(i=0;i<6;i++)rn printf("%4d",a[i]);rn printf("\n");rn return 0;rnrn我是 初学者 有些地方看的不太懂 就是 交换哪一步? 希望 学长们 能够帮我解释解释 这个程序
C 数组的表示方法。
今天碰到一段奇怪的 C 语言代码:rn[code=C/C++]rnint a[5] = 1,2,3,4,5;rnprintf("%d\n%d\n",a[3],3[a]);rn[/code]rnrn居然有 3[a] 这种表达方式,而且它的值和 a[3] 一样,都是4.rn3[a] 这是什么表达方式?
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池