作为聚合分析的一个例子,我们来看一个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;
}
## 这个图是我看了一个下午才理解其中的含义 ##
你能说说最后的总代价是怎么来的吗?最后又是怎么摊还分析的吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。