作为聚合分析的一个例子,我们来看一个k位二进制计数器递增问题,计数器是的初值为0.我们用一个位数组A[0,K-1]作为计数器,其中K=A.length,当计数器保存的二进制值为x时,x的最低位保存在A[0]中,而最高位保存在A[k-1]中,
废话了这么多,
## 代码 ##
#include <iostream>
using namespace std;
void count(int a[],int n)
{
int i = 0;
while(i < n && a[i] == 1)
{
a[i] = 0;
i++;
}
if(i < n)
{
a[i] = 1;
}
}
/*测试程序*/
int main(int argc,char const *argv[])
{
int array[6] = {0,0,0};
for(int i = 0; i <= 21; i++)
{
count(array,6);
}
for(int i = 5; i >= 0; i--)
{
cout << array[i] << " ";
}
return 0;
}
## 这个图是我看了一个下午才理解其中的含义 ##
你能说说最后的总代价是怎么来的吗?最后又是怎么摊还分析的吗?