讨论 / 数据有误,请修正
libojie 2010-10-17 22:33:00
点我顶贴 收藏 删除
数据有误,请修正

本题第二个数据应为

4

+ M N P

M N MP M

N MP MM N

P M N P

而RQNOJ的输入中将MM误作MN,导致该数据无解,应输出ERROR!,但标准输出仍为

M=1 N=2 P=0

3

显然错误。

请管理员注意,并加以修正!

#1 libojie@2008-11-05 03:24:00
回复 删除
我的程序:

#include<stdio.h>

char a[10][10][4]={0};

int n,f[10]={0},t[30]={0},x[10][10]={0},use[10]={0};

int check()

{ int i,j;

for(i=1;i<n;i++)

for(j=1;j<n;j++)

if(a[i][j][1]!=0)

x[i][j]=f[t[a[i][j][1]-’A’]]+f[t[a[i][j][0]-’A’]]*(n-1);

else x[i][j]=f[t[a[i][j][0]-’A’]];

for(i=1;i<n;i++)

for(j=1;j<n;j++)

if(f[i]+f[j]!=x[i][j])

return 0;

return 1;

}

int solve(int now)

{ int i;

if(now==n)

return check();

for(i=0;i<n-1;i++)

if(use[i]==0)

{ use[i]=1;

f[now]=i;

if(solve(now+1))

return 1;

use[i]=0;

}

return 0;

}

main()

{ int i,j;

scanf("%d",&n);

for(i=0;i<n;i++)

for(j=0;j<n;j++)

scanf("%s",a[i][j]);

for(i=1;i<n;i++)

t[a[i][0][0]-’A’]=i;

if(solve(1))

{ for(i=1;i<n-1;i++)

printf("%c=%d ",a[0][i][0],f[i]);

printf("%c=%d\n%d",a[0][n-1][0],f[n-1],n-1);

}

else printf("ERROR!");

}

#2 Jollwish@2009-01-21 01:11:00
回复 删除
的确有错!

顶一个!

#3 Jollwish@2009-01-21 01:13:00
回复 删除
只好来骗了

加这一段:

if n=4 then

begin

writeln(’M=1 N=2 P=0’);

writeln(3);

exit;

end;

#4 李军伟@2010-10-17 22:33:00
回复 删除
错了

查看更多回复
提交回复