首页 > 代码库 > OpenStack_Swift源码分析——Ring的rebalance算法源代码详细分析
OpenStack_Swift源码分析——Ring的rebalance算法源代码详细分析
今天有同学去百度,带回一道面试题,和大家分享一下:
打印:
n=1
1
n=2
3 3 2
4 1 1
4 5 5
n=3
7 7 7 7 6
8 3 3 2 6
8 4 1 1 6
8 4 5 5 5
8 9 9 9 9
提供一段参考程序:
<pre name="code" class="cpp">// ConsoleApplication1.cpp: 主项目文件。 #include "stdafx.h" #include "stdio.h" using namespace System; int **a; void fun(int n,int k) { int i,j; if (n > 1) { a[2*n-3+k][2*n-2+k]=4*n-7;//第一个数 for ( i = 2*n-4; i >= 0; i--)//最右面一列 { a[i+k][2*n-2+k]=4*n-6; } for ( i = 2*n-3; i >= 0; i--)//最上面一行 { a[0+k][i+k]=4*n-5; } for ( i = 1; i < 2*n-1; i++)//最左面一列 { a[i+k][0+k]=4*n-4; } for ( i = 1; i < 2*n-1; i++)//最下面一行 { a[2*n-2+k][i+k]=4*n-3; } fun(n-1,k+1); } if (n == 1) { a[n-1+k][n-1+k]=1; } } int main(array<System::String ^> ^args) { int i,j,k,n; scanf("%d",&n); a=new int*[2*n-1]; for (i = 0; i < 2*n-1; i++) { a[i]=new int[2*n-1]; } fun(n,0); for ( i = 0; i < 2*n-1; i++) { for ( j = 0; j < 2*n-1; j++) { printf("%d ",a[i][j]); } printf("\n"); } for (i = 0; i < 2*n-1; i++) { delete a[i]; } delete a; return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。