| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:这题不是你想的那么简单警察捉小偷
只看楼主 加入收藏
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
收藏
 问题点数:0 回复次数:1 
这题不是你想的那么简单警察捉小偷

Time Limit:1000MS Memory Limit:65536K
Total Submit:58 Accepted:0

Description

h市警察刚刚破获一个小偷团伙的据点恰好他们刚把赃物均分,因为各种财物的价值是不等的不方便均分,因此他们把财物兑换成黄金并均分。警察抓获他们的时候,均分好的金条长短不一的放在桌面上,但是不排除有小偷因病未来,或望风而逃的可能性,因此警探找到了你,h大学的编程高手,想通过金条的长度数量来初步判断是否有小偷漏网,(这个组织很严密,每个小偷都不互相认识,因此不存在一个金条两人分的情况,即每人的金条总长度都相等)

Input

第一行包含两个整数n,m(n个小偷,n大于1,不超过6,m个金条,m大于1,m不超过30)。
第二行包含m个整数,表示每根金条的长度。
n=0,m=0表示结束


Output

如果m个金条能分成n份每份的长度相等,说明小偷可能全部被捕输出“may be all in prison”
否则说明一定有小偷漏网,输出“there must be someone at large”

Sample Input


2 4
1 1 1 1
3 6
1 1 1 1 1 2
0 0


Sample Output


may be all in prison
there must be someone at large

搜索更多相关主题的帖子: 小偷 警察 
2007-11-02 15:55
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
收藏
得分:0 

#include<stdio.h>
int n,m;
int a[30];
int k,z;
int f1(int ,int);
int main()
{
while(scanf("%d%d",&n,&m)!=EOF && (n!=0 && m!=0))
{
k=0;
int i,x,y=0;
for(i=0;i<m;i++)
{
scanf("%d",&x);
a[i]=x;
y=y+x;
}

if(y%n!=0)
printf("there must be someone at large\n");
else
{
z=y/n;
f1(0,z);
if(k==1)
printf("may be all in prison\n");
else
printf("there must be someone at large\n");
}

}
return 0;
}
int f1(int sum,int x)
{
if(k==1)
return k;
int i,y,w;
if(x==0)
{
sum++;
x=z;
}
if(sum==n)
{
k=1;
return k;
}
for(i=0;i<m;i++)
if(x>=a[i] && a[i]!=0)
{
x=x-a[i];
y=a[i];
a[i]=0;
f1(sum,x);
a[i]=y;
x=x+y;
}

}


前世五百次的回眸 才换来今生的擦肩而过
2007-11-03 09:24
快速回复:这题不是你想的那么简单警察捉小偷
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029574 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved