为了账号安全,请及时绑定邮箱和手机立即绑定

增加整数数组中的整数值

增加整数数组中的整数值

牧羊人nacy 2021-11-11 13:37:56
我对增加一维整数数组中的值有疑问。例如,像这样的数组[0,0,0,0],我想将数组中最远的位置增加一个 so [0,0,0,1]。例如,我想继续将此值增加到设定的限制[0,0,0,3],一旦达到该限制,我想将整数的值直接增加到左侧 1 并重置最右侧,[0,0,1,0]然后再重复一遍以最终获得输出像这样[0,0,1,3]-> [0,0,3,3]->[0,1,0,0]请注意,我确实跳过了几个步骤,但每次我只想增加 1。这就是我想用于 DFS 的。数组的大小也可以改变,但只有在第一次创建时才会改变,所以一次运行的大小可能是 20,而另一次运行可能是 5,所以使用一堆 for 循环是行不通的。我也不是在寻找答案,只是朝着正确的方向提示。
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

就像是


function IncrementOne(int array[], int maxArrayInt, int maxArrayLength) {

    int i = maxArrayLength - 1;

    bool c = false;

    do {

       int p = array[i];

       p = p + 1;

       c = p > maxArrayInt;

       if(c) 

          array[i] = 0;

       else 

          array[i] = p;

       i = i - 1;

    }

    while(c && i >= 0)

}

调用 IncrementOne 函数(即IncrementOne([0,0,3,3], 4, 3)对于您的示例)。如果需要,可以自动导出 maxArrayLength。


数组在 do / while 循环中至少运行一次


在 do while 循环中,获取数组中的最大值


增量值


检查值是否大于 maxArrayInt


如果是,则将最右边的值设置为 0 并再次运行循环


如果不是,则使用递增的值设置最右边的值并退出循环


查看完整回答
反对 回复 2021-11-11
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

创建一个整数数组,然后对要更新的数组元素使用增量运算符。


int [] myIntArray = new int[10];

int myCurrentPos = 0;

...

myIntArray[myCurrentPos] = 1;

...

if((myIntArray[myCurrentPos] +1) == myMaxValue) {

  myIntArray[myCurrentPos] = 0;

  myCurrentPos++;

  myIntArray[myCurrentPos] = 1;

    }

  else {

myIntArray[myCurrentPos]++;  }

例如,您将想要扩展我包含的检查,例如数组大小的附加边界。


查看完整回答
反对 回复 2021-11-11
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

你基本上想要的是一个基数为 4 的数字系统。


Base 4      Base 10

0000    ->    0

0001    ->    1

0002    ->    2

0003    ->    3

0010    ->    4

0011    ->    5

0012    ->    6

0013    ->    7

0020    ->    8

... 等等。


因此,保留一个以 10 为基数的数字计数器,将它们转换为您的基数(在本例中为基数 4)并将该表示适当地存储在您的数组中。


查看完整回答
反对 回复 2021-11-11
  • 3 回答
  • 0 关注
  • 201 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信