鱼C论坛

 找回密码
 立即注册
查看: 6103|回复: 16

一道c语言的题目 自己做不出来了 好像是什么竞赛的题目

[复制链接]
发表于 2013-2-11 10:50:44 | 显示全部楼层 |阅读模式
10鱼币
为了促进各部门员工的交流,百度举办了一场全公司范围内的“拳皇”(百度内部最流行的格斗游戏)友谊赛,负责组织这场比赛的是百度的超级“拳皇”迷W.Z。W.Z不想用传统的淘汰赛或者循环赛的方式,而是自己制定了一个比赛规则。
由于一些员工(比如同部门或者相邻部门员工)平时接触的机会比较多,为了促进不同部门之间的交流,W.Z希望员工自由分组。不同组之间的每两个人都会进行一场友谊赛而同一组内的人之间不会打任何比赛。
比如4个人,编号为1~4,如果分为两个组并且1,2一个组,3,4一个组,那么一共需要打四场比赛:1 vs 3,1 vs 4,2 vs 3,2 vs 4。而如果是1,2,3一组,4单独一组,那么一共需要打三场比赛: 1 vs 4,2 vs 4,3 vs 4。
很快W.Z意识到,这样的比赛规则可能会让比赛的场数非常多。W.Z想知道如果有N个人,通过上面这种比赛规则,总比赛场数有可能为K场吗?比如3个人,如果只分到一组则不需要比赛,如果分到两组则需要2场比赛,如果分为三组则需要3场比赛。但是无论怎么分都不可能恰需要1场比赛。
相信作为编程高手的你一定知道该怎么回答这个问题了吧?那么现在请你帮助W.Z吧。
输入要求:
每行为一组数据,包含两个数字 N, K(0<N<=500, K>=0)。例:
2 0
2 1
3 1
3 2
样例:in.txt
输出要求:
对输入的N,K 如果N个员工通过一定的分组方式可以使比赛场数恰好为K,则输出"YES",否则输出"NO"(请全部使用大写字母),每组数据占一行。例:
YES
YES
NO
YES 样例:out.txt
后面的数据处理我会 但是找出所有的相加等于500的我还没想出来 那个不只是两组的  还有我想了一个思路 给一个数组赋值500个1 然后把1往前面移,但是我没想好后面怎么控制

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-12 10:47:06 | 显示全部楼层
给你点小小的个人想法。其实你发现了么 。无论你定义多少个人,无论你怎么分组。而他们比赛的场次数都一定为(n-i)*i  ,,  其中0<i<n。那么你是不是可以设计一个循环。在(n-i)*i里寻找是否有符合k的数值呢,如果有符合,直接输出yes,遍历后没有符合,输出no~~  哈 。新年了,我要出去拜年了 。对于这儿代码怎么写,慢慢研究吧!!~~;P
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-12 20:20:30 | 显示全部楼层

这只是其中的一种情况 题目说的是分多少组都可以 你这样只是分两组的 骚年
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-13 14:34:12 | 显示全部楼层
白菜/kl 发表于 2013-2-12 20:20
这只是其中的一种情况 题目说的是分多少组都可以 你这样只是分两组的 骚年

骚年 ,我吧运算那部分的代码写给你吧 ,剩下的你自己研究去!!!~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-13 19:30:20 | 显示全部楼层
本帖最后由 季末、梨花雨落 于 2013-2-17 09:29 编辑
  1. void main()
  2. {
  3. int N=0,K=0,i=0,t=0;
  4. printf("请输入两个数字,0≤N≤500!k≥0\n");
  5. scanf("%d %d",&N,&K);
  6. for(;i<=N;i++)
  7. { int P=0;
  8. P=(N-i)*i;
  9. if(P==K)
  10. t++;

  11. }
  12. if(t>0)
  13. printf("YES\n");


  14. else
  15. printf("NO\n");
  16. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-13 19:31:05 | 显示全部楼层
前面玩游戏去了,忘记了 。。刚刚才想起!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-14 20:14:57 | 显示全部楼层
季末、梨花雨落 发表于 2013-2-13 19:31
前面玩游戏去了,忘记了 。。刚刚才想起!!

你这段代码只是其中的一种情况的
比如说3人吧  能分两组(1,2)也能分三组(1,1,1)两组的话你的程序没错 但是这只是一种情况啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-14 20:17:21 | 显示全部楼层
季末、梨花雨落 发表于 2013-2-13 19:31
前面玩游戏去了,忘记了 。。刚刚才想起!!

还有 你那个标记没有用处 直接在if里面加个break就可以了。。。你这样运算 岂不是找到了数字还要运行下去。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-14 20:51:47 | 显示全部楼层
  挺难的说  这个   我回去好好想想
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-14 22:50:50 | 显示全部楼层
这个百度有哦
百度
百度 (baidu) 举办了一场全公司范围内的 " 拳皇友谊赛 " , 负责组织这场...相信作
就有了,写的很完整
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-15 09:43:07 | 显示全部楼层
本帖最后由 季末、梨花雨落 于 2013-2-17 09:30 编辑
白菜/kl 发表于 2013-2-14 20:14
你这段代码只是其中的一种情况的
比如说3人吧  能分两组(1,2)也能分三组(1,1,1)两组的话你的程序没 ...

复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-15 09:44:54 | 显示全部楼层
白菜/kl 发表于 2013-2-14 20:17
还有 你那个标记没有用处 直接在if里面加个break就可以了。。。你这样运算 岂不是找到了数字还要运行下去 ...

如果你在if里加break 。你觉得程序会执行几次输出?判断无非有两种可能,一种是正确一种是错误,而你现在需要寻找的是正确的。万一正确的在最后面的话,按照你的这个思路来,那岂不是得输出多次错误的才能输出正确的?!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-15 10:37:44 | 显示全部楼层
本帖最后由 メ㊣逆ご帅☆ 于 2013-2-15 11:17 编辑

你好像错了,N==K跳出?
可能性列举错了吧,举个特例
7 7
N==K吧
1 2 3 4 5 6 7
一组
如果1234567一组。 ZERO
1 2 3 4 5 6 7
两组
如果1独自一组 各种轮奸 一共 6种
如果12一组 1V3 1V4 1V5 1V6 1V7 2V3 2V4 2V5 2V6 2V7 10种
如果123一组 1V4 1V5 1V6 1V7 2V4 2V5 2V6 2V7 3V4 3V5 3V6 3V7 12种
如果1234一组1V5 1V6 1V7 2V5 2V6 2V7 3V5 3V6 3V7 4V5 4V6 4V7 12种
如果12345一组 1V6 1V7 2V6 2V7 3V6 3V7 4V6 4V7 5V6 5V7 10种

其他可能性场数均和上面其中一个相同
1 2 3 4 5 6 7
三组
如果1一组 2一组 34567一组 1V2,34567轮流P 1和2 11种
如果12一组,34一组 567一组 16种
如果123一组 456一组 7一组 15种
如果1234一组 56一组 7一组 14种

其他可能性场数均和上面其中一个相同
1 2 3 4 5 6 7
四组
如果12 34 56 7    10+6+2=18种
如果123 45 6 7    12+4+1=17种
如果1 2 3 4567    6+5+4=15种
其他可能性场数均和上面其中一个相同
1 2 3 4 5 6 7
五组
如果 1 2 3 4 567 6+5+4+3=18种
如果 12 34 5 6 7 10+6+2+1=19种
其他可能性场数均和上面其中一个相同
1 2 3 4 5 6 7
六组
如果 1 2 3 4 5 67 6+5+4+3+2=20种

其他可能性场数均和上面其中一个相同
七组(最大分组)
如果 1 2 3 4 5 6 7 6+5+4+3+2+1=21种

其他可能性场数均和上面其中一个相同


没有一个是7滴。。




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-15 22:04:21 | 显示全部楼层
季末、梨花雨落 发表于 2013-2-15 09:44
如果你在if里加break 。你觉得程序会执行几次输出?判断无非有两种可能,一种是正确一种是错误,而你现在 ...

ruguo shi cuo wu de jiu bu shu chu a ....
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-17 09:28:25 | 显示全部楼层
メ㊣逆ご帅☆ 发表于 2013-2-15 10:37
你好像错了,N==K跳出?
可能性列举错了吧,举个特例
7 7

= =||我错了。LZ把我误导了 。。。。他跟我说的是分组方式。题目要求计算的是比赛场次...!!!我原来那个代码应该没错!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-17 09:29:11 | 显示全部楼层
白菜/kl 发表于 2013-2-15 22:04
ruguo shi cuo wu de jiu bu shu chu a ....

你看题目。要求判断该分组方法到底能不能实现。如果不能实现输出NO,能实现输出YES~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-17 18:46:36 | 显示全部楼层
季末、梨花雨落 发表于 2013-2-17 09:28
= =||我错了。LZ把我误导了 。。。。他跟我说的是分组方式。题目要求计算的是比赛场次...!!!我原来那个 ...

你根本没有读懂题目 自己百度吧 13楼的兄弟才是正解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表