C语言动态规划问题
#include<stdlib.h>
#include<stdio.h>
struct savenum
{
int n;
struct savenum *next;
};
int main()
{
struct savenum *a,*p;
a = (struct savenum *) malloc(sizeof(struct savenum));
int n=3;
void find(int n,struct savenum * a);
find(n,a);
p=a;
printf("\n");
while(p!=NULL)
{
printf("%d",p->n);
p=p->next;
}
getchar();
}
void find(int n,struct savenum *a)
{
int c[10],i,j,m[3],k,num=0;
struct savenum *p;
for(i=1;i<9;i++)
c[i]=i+1;
for(i=192;i<193;i++)
{
for(j=0;j<n;j++)
{
m[j]=i*(j+1);
while(m[j])
{
for(k=0;k<9;k++)
{
if(m[j]%10==c[k])
c[k]=-1;
}
m[j]/=10;
}
}
for(k=0;k<9;k++)
{
if(c[k]==-1)
{
c[k]=k+1;
if(k==8)
{
if(num==0)
{ a->n=i;
p=a;
}
else
{ p->next=(struct savenum *)malloc(sizeof(struct savenum));
p->next->n=i;
p=p->next;
}
}
}
else break;
}
if(i==192) p->next=NULL;
}
}
在TC2编译不通过,DEV-C里运行错误; C 动态规划
[解决办法]
#include<stdlib.h>
#include<stdio.h>
struct savenum
{
int n;
struct savenum *next;
};
int main()
{
struct savenum *a,*p;
a = (struct savenum *) malloc(sizeof(struct savenum));
int n=3;
void find(int n,struct savenum * a);
find(n,a);
p=a;
printf("\n");
while(p!=NULL)
{
printf("%d\n",p->n);
p=p->next;
}
getchar();
}
void find(int n,struct savenum *a)
{
int c[10],i,j,m[3],k,num=0;
struct savenum *p;
for(i=0;i<9;i++)//i从0开始。。否则运行时会挂掉。。
c[i]=i+1;
for(i=192;i<193;i++)
{
for(j=0;j<n;j++)
{
m[j]=i*(j+1);
while(m[j])
{
for(k=0;k<9;k++)
{
if(m[j]%10==c[k])
c[k]=-1;
}
m[j]/=10;
}
}
for(k=0;k<9;k++)
{
if(c[k]==-1)
{
c[k]=k+1;
if(k==8)
{
if(num==0)
{
a->n=i;
p=a;
}else{
p->next=(struct savenum *)malloc(sizeof(struct savenum));
p->next->n=i;
p=p->next;
}
}
}
else break;
}
if(i==192) p->next=NULL;
}
}