zoukankan      html  css  js  c++  java
  • 循环变量hdu 1799 循环多少次?

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正

        

    循环多少次?

        Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 2096    Accepted Submission(s): 755

        

    Problem Description

        

      我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分。例如,
    如果代码中涌现
    for(i=1;i<=n;i++) OP ;
    那么做了n次OP运算,如果代码中涌现
    fori=1;i<=n; i++)
      for(j=i+1;j<=n; j++) OP;
    那么做了n*(n-1)/2 次OP 操作。
    当初给你已知有m层for循环操作,且每次for中变量的起始值是上一个变量的起始值+1(第一个变量的起始值是1),终止值都是一个输入的n,问最后OP有统共多少盘算量。

        

     

        

    Input

        

      有T组case,T<=10000。每个case有两个整数m和n,0<m<=2000,0<n<=2000.

        

     

        

    Output

        

      对于每个case,输出一个值,表现总的盘算量,或许这个数字很大,那么你只需要输出除1007留下的余数便可。

        

     

        

    Sample Input
    2 1 3 2 3
     

        

    Sample Output
        每日一道理
    自己把自己说服了,是一种理智的胜利;自己被自己感动了,是一种心灵的升华;自己把自己征服了,是一种人生的成功。
    3 3
     这题有点动态规划的滋味,都是基于上前者的基础上,就差状态转移了

        

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

        

    看到表没,根据表可惜得出第i层第j个数有 dp[i][j]=dp[i][j-1]+dp[i-1][j-1]种
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    #define N 2001
    #define M 1007
    int f[N][N];
    int main(){
    	int i,j,n,m,T;
    	for(i=1;i<N;i++)f[1][i]=1;
    	for(i=2;i<N;i++)//第i层
    		for(j=i;j<N;j++){//第j个数
    			f[i][j]=f[i][j-1]+f[i-1][j-1];
    			if(f[i][j]>=M)f[i][j]%=M;
    		}
    		scanf("%d",&T);
    		while(T--){
    			scanf("%d%d",&m,&n);
    			for(i=m,j=0;i<=n;i++){
    				j+=f[m][i];
    				if(j>=M)j%=M;
    			}
    			printf("%d\n",j);
    		}
    
    return 0;
    }

    文章结束给大家分享下程序员的一些笑话语录: IT业众生相
    第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。
    第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。
    第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。
    第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。
    第五级:技术工人,技术精湛,熟悉行业知识但领导能力欠加,此类人大多为系分人员或资深程序员,基本上桀骜不逊,自视清高,不愿于一般技术人员为伍,在论坛上基本以高手面目出现。
    第六级:熟练工人,技术有广度无深度,喜欢钻研但浅尝辄止。此类人大多为老程序员,其中一部分喜欢利用工具去查找网上有漏洞的服务器,干点坏事以获取成绩感。如果心情好,在论坛上他们会回答菜鸟的大部分问题。此级别为软件业苦力的重要组成部分。
    第七级:工人,某些技术较熟练但缺乏深度和广度,此类人大多为程序员级别,经常在论坛上提问偶尔也回答菜鸟的问题。为软件产业苦力的主要组成部分。
    第八级:菜鸟,入门时间不长,在论坛上会反复提问很初级的问题,有一种唐僧的精神。虽然招人烦但基本很可爱。只要认真钻研,一两年后就能升级到上一层。
    第九级:大忽悠,利用中国教育的弊病,顶着一顶高学历的帽子,在小公司里混个软件部经理,设计不行,代码不行,只会胡乱支配下属,拍领导马屁,在领导面前胡吹海侃,把自己打扮成技术高手的模样。把勾心斗角的办公室文化引入技术部门,实在龌龊!
    第十级:驴或傻X,会写SELECT语句就说自己精通ORALCE,连寄存器有几种都不知道就说自己懂汇编,建议全部送到日本当IT产业工人,挣了日本人的钱还严重打击日本的软件业!

  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3076966.html
Copyright © 2011-2022 走看看