那个外企面试题目的答案(因为是我出的题目)其实很简单的!
bskay 2002-01-10 10:30:20 static int ProcessOnce(int* a, int nCount)
{
//返回“最靠近”a的数组
//如上面的 a={7,0,0}
//则返回后a为{6,1,0}
//再调用ProcessOnce后
//a为{5,2,0}
for(int n=0; n<nCount-1; n++)
{
if(a[n] > a[n+1]+2 )
{
a[n]--;
a[n+1]++;
break;
}
}
if (n == nCount-1)
return FALSE;
return TRUE;
}
static int IsCondition(int* a, int nCount)
{
for(int n=0; n<nCount; n++)
{
if (a[n] == 0)
return FALSE;
}
return TRUE;
}
void CFffApp::asst()
{
int n=100;
int m=7;
int* a = new int[m];
for(int i=0;i<m; i++) a[i] = 0;
a[0] = n;
while(ProcessOnce(a,m))
{
if(IsCondition(a,m))
{
for(int n=m-1; n>=0; n--)
{
TRACE("%d ", a[n]);
}
TRACE("\n");
}
}
}
我老是输错,真抱歉啊!!
都3次了,哎~~~~~~~~~~`