zoukankan      html  css  js  c++  java
  • NYOJ 708 ones

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
    描述
    Given a positive integer N (0<=N<=10000), you are to find an expression equals to N using only 1,+,*,(,). 1 should not appear continuously, i.e. 11+1 is not allowed.
    输入
    There are multiple test cases. Each case contains only one line containing a integer N
    输出
    For each case, output the minimal number of 1s you need to get N.
    样例输入
    2
    10
    样例输出
    2
    7
     1 #include<cstdio>
     2 #include<cmath>
     3 #include<iostream>
     4 using namespace std;
     5 #define INF 100003
     6 int dp[10002];
     7 int main()
     8 {
     9     int i, z, n;
    10     dp[1] = 1, dp[2] = 2;
    11     for(i = 3; i < 10001; i++){
    12         dp[i] = INF;
    13         for(z = 1; z < i && z <= i / 2; z++){
    14             dp[i] = min(dp[i], dp[i-z] + dp[z]);
    15             if(z != 1 && (i%z) == 0){
    16                 dp[i] = min(dp[i], dp[i/z]+dp[z]);
    17             }
    18         }
    19     }
    20     while(~scanf("%d", &n))
    21     {
    22         printf("%d
    ", dp[n]);
    23     }
    24     return 0;
    25 }
    View Code
  • 相关阅读:
    asp.net中的Application概述
    Android布局
    Content Provider
    Service
    进程和线程Processes and Threads
    Android模拟器
    Fragment
    Ui Event
    Loader
    sqlite3命令
  • 原文地址:https://www.cnblogs.com/qiu520/p/3650532.html
Copyright © 2011-2022 走看看