序列可图化问题
求大佬帮忙看看,这个代码写的函数的问题在哪,请指正,编译器给的提示有点懵!!!#include<stdio.h>
#define M 3000
int a = {0};
void havelSequence(int N, int* a);
void havelSequence(int N, int* a)
{
int j,k;
int t = N;
int flag = 0;
int flg = 0;
for(j=0;j<N;j++)
{
if(a%2 != 0)
{
flag += 1;
}
if(a==0)
{
t--;
}
}
if(flag%2)
{
printf("no\n");
}
else if(flag%2==0)
{
for(k=0;k<t;k++)
{
for(j=k;j<t;j++)
{
if(a<a)
{
a = a;
}
}
}
}
for(j=0;j<t-1;j++)
{
a--;
}
for(j=0;j<N;j++)
{
if(a = 0)
{
flg++;
}
}
if(flg == N)
{
printf("yes\n");
}
else
{
havelSequence(t, *a);
}
}
int main()
{
int N;
scanf("%d", &N);
int i;
for(i=0;i<N;i++)
{
scanf("%d", &a);
}
printf("\n");
havelSequence(N, *a);
return 0;
} 把
havelSequence(N, *a);
改成
havelSequence(N, a);
a的定义是整型数组,本质是int *
函数声明是void havelSequence(int N, int* a); 第二个参数类型是int *
所以传参的时候写a就可以了
*a是取a数组第一个值,类型是int,参数类型不匹配
同样,&a也不对,类型是int**,参数类型不匹配
两个问题:1.函数第二个参数是指针,传a就行了,不用*a,
2.中间有一个if判断写错了,flg++那里的if判断应该是 a == 0 嗯,刚试过了,后来和朋友讨论之后尝试在声明里面写了一个参数,结果就好了,莫名其妙(声明明明不用写参数的)
不过啊还是谢谢你,现在我解决这个问题了,又有了一个新问题,请看新帖(同名) 请教大佬,这是我之后改的,可以运行,但是不能过OJ
#include<stdio.h>
#define N 3010
int arr = {0};
void havelSequence(int arr[], int m);
void havelSequence(int arr[], int m)
{
int flag = 0;
int i,j;
for(i=0;i<m;i++) //奇数度个数
{
if(arr%2 != 0)
{
flag++;
}
}
if(flag%2)
{
printf("no\n");
}
else if(flag%2==0)
{
for(i=0;i<m;i++) //非递增序列排序
{
for(j=i;j<m;j++)
{
int temp;
if(arr<arr)
{
temp = arr;
arr = arr;
arr = temp;
}
}
}
for(i=0;i<arr;i++) //最大度数对应的边与后面的边相连,然后抛弃
{
arr--;
}
arr = 0;
}
flag = 0;
for(i=0;i<m;i++)
{
if(arr<0)
{
printf("no\n");
break;
}
else if(arr==0)
{
flag++;
}
}
if(flag==m)
{
printf("yes\n");
}
else
{
havelSequence(arr,m);
}
}
int main()
{
int m;
scanf("%d", &m);
int i;
for(i=0;i<m;i++)
{
scanf("%d", &arr);
}
havelSequence(arr, m);
return 0;
}
页:
[1]