鱼C论坛

 找回密码
 立即注册
查看: 3874|回复: 0

请个位帮忙看下,如何减小如下代码的时间复杂度,谢谢。

[复制链接]
发表于 2012-12-24 17:30:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是我在BNUOJ新手题上遇到一个问题,取石子。(题目附于最后)
提交此题后用时1004ms(要求是1000ms以内),还望各位指教。
代码如下:
#include<stdio.h>
#define N 20
void main()
{
    int i,n,stu1[N],stu2[N];//stu1[N]存n,stu2[N]存m
    restart1:scanf("%d",&n);
if(n>20)
  goto restart1;//n小于20
for(i=0;i<n;i++)
{
        restart2:scanf("%d%*c%d",&stu1[i],&stu2[i]);
  if(stu1[i]<1||stu2[i]>1000||stu2[i]<1||stu2[i]>=stu1[i])//限制范围
      goto restart2;
}
for(i=0;i<n;i++)
{
     if(stu1[i]%(stu2[i]+1)==0)
   printf("second\n");
  else
   printf("first\n");
}
}
题目如下:
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。

Input 输入数据首先包含一个正整数C(C ≤20),表示有C组测试数据。
每组测试数据占一行,包含两个整数n和m(1≤n,m≤1000),n和m的含义见题目描述。


Output 如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。


Sample Input 223 24 3

Sample Output firstsecond

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-13 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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