• 151 Power Crisis


    题目大意:

    题目原文:http://uva.onlinejudge.org/external/1/151.pdf

    大概是说有N个地区,编号分别是1~N,要按一个算法规则依次断电,这个算法是:规定一个数字m,第一个断电的是1地区,然后往后数m个没断电的城市,第二个断电的应该是1+m 地区,如果数的过程中到了第N个城市,则从头开始继续往下数。如:N=17,m=5的时候,断电的顺序依次是:1,6,11,16,5...要注意到16的时候,往下数是17,2,3,4,5(因为1已经断电了,不数。)那么题目要求输入一个N,求出最后一个断电的地区是13的最小的m值输出。

    使用穷举法即可完成了。输入一个N,然后定义一个长度是N+1的数组x,让m值从1开始循环。先把数组x全部赋值为0,然后从x[1]开始赋值为1表示该地区已经断电,再往后数m个不等于1的地区,赋值为1;再继续数m个地区。。。直到数了N个地区之后,说明全部都断电了,那么判断最后一个断电的地区是不是13。如果是,则找到了m,如果不是的话,就m++再重复上面的步骤。

    附上代码:

    View Code
     1 #include<stdio.h>
     2 int main()
     3 {
     4  int n,m,i,j,k;
     5  while(1)
     6  {
     7   scanf("%d",&n);
     8   if(n==0) break;//退出条件 
     9   int x[n+1];
    10   for(m=1;;m++)
    11   {
    12     for(i=1;i<=n;i++) x[i]=0;//初始化 
    13     i=j=1;
    14     x[1]=1;
    15     while(j<n)
    16      {
    17       for(k=1;k<=m;i++)//k计算当前往后数了几次 
    18       {
    19        if(x[i]==0) k++;//如果是0的话要计数一次 
    20        else if(i>n) i=1;//如果当前的i值超过了n,要从头开始计算。 
    21       }
    22       x[i-1]=1;
    23       j++;//j用来计数当前有多少地区断电,如果j==n说明全部断电完成 
    24      }
    25 
    26      if(i-1==13)
    27      {
    28               printf("%d\n",m);
    29               break;
    30      }
    31                 
    32   }                          
    33  }
    34  return 0;
    35 }
  • 相关阅读:
    将execel表格的数据导入到mysql数据库
    清明听雨
    h5调用底层接口的一些知识
    微信小程序从零开始开发步骤(一)搭建开发环境
    Matplotlib
    Numpy
    pandas
    6 MapReduce的理解
    静态链表
    单链表
  • 原文地址:https://www.cnblogs.com/syiml/p/2913809.html
Copyright © 2020-2023  润新知