这个程序错在哪里了?

来源:百度知道 编辑:UC知道 时间:2024/05/09 15:29:17
题目:有A、B、C、D、E 5本书,要分给张、王、刘、赵、钱5位同学,每人只能选1本。每个人都将自己喜爱的书填写在下表中。请你设计一个程序,打印出让每个人都满意的所有分书方案。

程序代码:
#include <stdio.h>
#include <stdlib.h>

void print(int F[])
{
printf("Zhang %d",F[0]);
printf("Wang %d",F[1]);
printf("Liu %d",F[2]);
printf("Zhao %d",F[3]);
printf("Qian %d",F[4]);
}

void fun(int i,int like[][],int F[],int h[])
{
int j;
for(j=0;j<5;j++)
{
if(h[j]==0&&like[i][j]==1)
{
F[i]=j;
h[j]=1;
if(i==4)
print(F);
else

#include <stdio.h>
#include <stdlib.h>

void print(int F[])
{
printf("Zhang %d",F[0]);
printf("Wang %d",F[1]);
printf("Liu %d",F[2]);
printf("Zhao %d",F[3]);
printf("Qian %d",F[4]);
}

void fun(int i,int like[][],int F[],int h[])
{
int j;
for(j=0;j<5;j++)
{
if(h[j]==0&&like[i][j]==1)
{
f[i]=j;
h[j]=1;
if(i==4)
print(F);
else
fun(i+1,like,F,h);
h[j]=0;
F[i]=0;
}
}

int main(int argc, char *argv[])
{
int like[5][5]={{0,0,1,1,0},{1,1,0,0,1},{0,1,1,0,0},{0,0,0,1,0},{0,1,0,0,1}};
//表示第i个人喜欢的图书
int F[5];
//F[i]表示第i个人最后选择的图书
int h[5]={0,0,0,0,0};
//h[i]表示第i部书是否已经被分配过了
fun(0,like[][],F[],h[]);
system("PAUSE");
return 0;
}