当前位置: 代码迷 >> C语言 >> 深圳一公司招聘题(前日)
  详细解决方案

深圳一公司招聘题(前日)

热度:223   发布时间:2006-05-06 12:24:00.0
深圳一公司招聘题(前日)

3、用递归算法判断数组a[N]是否为一个递增数组。


下面是我写的算法,那位有更好的:

#include <stdio.h>
#include <conio.h>
#define N 5

int Judgment(int a[]);

int main()
{
int a[N], i, flag = 1;

printf("Enter array data: ");
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}

flag = Judgment(a);

if (flag == 1)
{
printf("increment array.\n");
}
else if (flag == 0)
{
printf("no increment array.\n");
}

getch();
return 0;
}

int Judgment(int a[])
{
static i = 0, flag = 1;

if(i < N - 1)
{
if (a[i] > a[i + 1])
{
flag = 0;
}
i++;
Judgment(a);
}

return flag;
}




















搜索更多相关的解决方案: 深圳  招聘  int  Judgment  flag  

----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <conio.h>
#define N 5

int Judgment(int a[], int num);

int main()
{
int a[N], i, flag = 1;

printf("Enter array data: ");
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}

flag = Judgment(a, N);

if (flag == 1)
{
printf("increment array.\n");
}
else if (flag == 0)
{
printf("no increment array.\n");
}

getch();
return 0;
}

int Judgment(int a[], int num)
{
static i = 0, flag = 1;

for(i=0; i<num; i++)
{
if (a[i] >= a[i+1]) //假如发现哪两个不是递增,立刻跳出;
{
flag = 0;
break;
}
}

return flag;
}

哥们,用递归效率差已.我帮你改了代码.


----------------解决方案--------------------------------------------------------
假如数据太大,用内存动态分配和指针来做即可.
----------------解决方案--------------------------------------------------------
人家要求就是用递归,不用递归不行
----------------解决方案--------------------------------------------------------

哦,我倒没注意.甘你D程序得啦.


----------------解决方案--------------------------------------------------------
以下是引用论坛在2006-5-6 12:24:00的发言:

3、用递归算法判断数组a[N]是否为一个递增数组。


下面是我写的算法,那位有更好的:

#include <stdio.h>
#include <conio.h>
#define N 5

int Judgment(int a[]);

int main()
{
int a[N], i, flag = 1;

printf("Enter array data: ");
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}

flag = Judgment(a);

if (flag == 1)
{
printf("increment array.\n");
}
else if (flag == 0)
{
printf("no increment array.\n");
}

getch();
return 0;
}

int Judgment(int a[])
{
static i = 0;

if(i < N - 1)
{
if (a[i] > a[i + 1])
{
return 0; /*这样才好*/
}
i++;
Judgment(a);
}

return 1;
}
flag变量不要,这样简单些,至于本质算法应该是最简了吧,就我来讲.




















----------------解决方案--------------------------------------------------------

/*用递归算法判断数组array[N]是否为一个递增数组*/
#include <stdio.h>
#include <conio.h>
#include "stdlib.h"


int Judgment(int a[],int i,int N);

int main()
{
int *array=NULL,N,i,flag=1;

printf("Enter the length of the array: ");
scanf("%d",&N);
array=(int *)malloc(N*sizeof(int));/*实现动态数组*/

printf("Enter array data: ");
for (i=0;i<N;i++)
{
scanf("%d", &array[i]);
}

flag=Judgment(array,0,N);

if (flag==1)
{
printf("increment array.\n");
}
else if(flag==0)
{
printf("no increment array.\n");
}

getch();
}

int Judgment(int a[],int i,int N)
{
int flag=1;

if(i<N)
{
if(a[i]>a[i+1])
return 0; /*出现不递增则返回0,不再向下验证*/
i++;
flag=Judgment(a,i,N);
}
return flag;
}


----------------解决方案--------------------------------------------------------
以下是引用lisong526在2006-5-6 13:15:00的发言:

/*用递归算法判断数组array[N]是否为一个递增数组*/
#include <stdio.h>
#include <conio.h>
#include "stdlib.h"


int Judgment(int a[],int i,int N);

int main()
{
int *array=NULL,N,i,flag=1;

printf("Enter the length of the array: ");
scanf("%d",&N);
array=(int *)malloc(N*sizeof(int));/*实现动态数组*/

printf("Enter array data: ");
for (i=0;i<N;i++)
{
scanf("%d", &array[i]);
}

flag=Judgment(array,0,N);

if (flag==1)
{
printf("increment array.\n");
}
else if(flag==0)
{
printf("no increment array.\n");
}

getch();
}

int Judgment(int a[],int i,int N)
{
int flag=1;

if(i<N)
{
if(a[i]>a[i+1])
return 0; /*出现不递增则返回0,不再向下验证*/
i++;
flag=Judgment(a,i,N);
}
return flag;
}

if(i<N)

过了吧


----------------解决方案--------------------------------------------------------

呵呵,楼上的心细


----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
  相关解决方案