30天编程练习(六)

原创 2018年04月16日 17:58:42

1025 吃糖果

题意:是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?

解析:本题考察的是排列组合问题,其实很简单,就是判断最多的糖果和剩下所有的糖果关系,如果大于1则不能吃完


#include <stdio.h>
#define M 1000000
#define max(a,b) a>b?a:b
int i,n,T,MAX;
int a[M];
int main()
{
    scanf("%d",&T);
    while(T--)
    {


        long long sum=0;
        scanf("%d",&n);
        MAX=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            sum+=a[i];        
            MAX=max(MAX,a[i]); 
        }
        sum=sum-MAX+1; 
        if(sum>=MAX) 
        {
            printf("Yes\n");
        }
        else 
        {
            printf("No\n");
        }
    }
    return 0;

}




1027 排列组合问题

 题意:给定1到N的序列,我们定义1,2,3 ... N-1,N是所有序列中的最小序列可以由1到N组成(每个数字可以并且应该只使用一次)。 所以很容易看到第二小的序列是1,2,3 ... N,N-1。 给出N和M,求得数字1到N组成的第M个最小序列。

解析:使用next_premutation函数,具体参考https://blog.csdn.net/lishuhuakai/article/details/8006937。


#include<stdio.h>  
#include<string.h>  
#include<algorithm>  
  
using namespace std;  
int f[1010];  
int main()  
{  
    int i, j, k, n, m;  
    while(scanf("%d%d", &n,&m) != EOF)  
    {  
        for(i = 0; i < n; ++i)  
        f[i] = i+1;  
        k = 1;  
        while(next_permutation(f, f+n))  
        {  
            k++;  
            if(k == m)  
            break;  
        }  
        for(i = 0; i < n-1; ++i)  
        printf("%d ", f[i]);  
        printf("%d\n", f[n-1]);   
    }  
    return 0;  

}   


1028  分解数

题意:例如对4分解成:

  4 = 4;
  4 = 3 + 1;
  4 = 2 + 2;
  4 = 2 + 1 + 1;

  4 = 1 + 1 + 1 + 1;

解析:递归求解,类似于动态规划,同时要对每个结果的值进行记忆。



#include<stdio.h>
#include<string.h>
int main()
{
        int n,i,j,k;
        int f[100][100];
        memset(f,0,sizeof(f));
        for(i=1;i<=120;i++)
        {       f[i][i]=1;
                for(j=1;j<i;j++)
                        for(k=1;k<=j;k++)
                                f[i][j]+=f[i-j][k];
                for(j=1;j<=i;j++)   f[i][0]+=f[i][j];
        }
        while(scanf("%d",&n)!=EOF) printf("%I64d\n",f[n][0]);
        return 0;
}



ios7版 30天精通iPhone手机编程

更多精彩内容,请见:http://www.16boke.com 去年把《30天精通iPhone手机编程》这本书的例子做了一遍没有做笔记,今年用的ios7,并且是新版本的XCode,结合新的环境准备再...
  • one_in_one
  • one_in_one
  • 2014年01月15日 10:18
  • 7370

ios7版 30天精通iPhone手机编程 第2天 第一个程序“Hello”

更多精彩内容,请见:http://www.16boke.com Label(标签)控件的应用 新建一个工程,采用Single View Application模板。从库窗口拖一个Label到Main...
  • one_in_one
  • one_in_one
  • 2014年01月15日 10:30
  • 9501

[读书笔记]30 天自制操作系统 day1 从计算机结构到汇编程序入门

1. 前言我们参考书籍为: http://download.csdn.net/detail/zhyh1435589631/9689118 http://download.csdn.net/det...
  • zhyh1435589631
  • zhyh1435589631
  • 2016年11月21日 19:16
  • 405

30天编程练习(三)

1009 猫鼠交换解析:一道典型的贪心算法的题,类似于背包问题,先按单价从小到大排序,再从最便宜的开始买,每次都买的尽可能多。#include &lt;iostream&gt;#inc...
  • zyc12321
  • zyc12321
  • 2018年04月04日 21:37
  • 3

30天编程练习(二)

1004 公交车路线问题理解:本题写的是公交车路线问题,本质就是并查集问题,将各个线路合并,求各个构造树是否有相同的根节点#include &lt;iostream&gt;#inclu...
  • zyc12321
  • zyc12321
  • 2018年04月03日 21:38
  • 5

30天编程练习(第一天)

题目1000 A+B解析:很简单的A+B计算#include&lt;stdio.h&gt;int main() {int a,b;while(scanf("%d%d"...
  • zyc12321
  • zyc12321
  • 2018年04月02日 21:58
  • 17

《30天自制操作系统》第1天

1.下载一个二进制编辑器(网上很多下载,google一下即可,也叫十六进制编辑器),他能直接对二进制数进行编辑。如果你对(某种处理器的)机器码非常熟悉的话,理论上可以用二进制编辑器完成(此处理器上的)...
  • a379039233
  • a379039233
  • 2013年12月21日 18:18
  • 2896

《30天自制操作系统》U盘启动,真机运行(16天)

首先说一下到目前为止U盘启动遇到的问题,首先的一个问题是“system volume information“,目前尚未解决,这个问题可能导致U盘启动失败,我猜测可能是由于每一次重新将OS写到U盘的时...
  • m47838704
  • m47838704
  • 2015年07月10日 20:18
  • 2987

30天自制操作系统——用U盘启动自制系统

最近试读了《30天自制操作系统》的前两章,感觉很有意思。 但是发现里面写的系统都是用软盘启动的,现在在大多数电脑上已经看不见软驱了,所以如果想运行书中的操作系统只能通过qemu(随书光盘中已经附...
  • h820911469
  • h820911469
  • 2014年02月28日 14:52
  • 4892

《30天自制操作系统》——虚拟机使用

《30天自制操作系统》是一本学习操作系统的好教材,它教我们怎么从建立引导区开始,从零实现一个操作系统。但是,实现书中例子的时候,我们需要不断将我们写好的操作系统代码写入软盘并且还要不断重启电脑来试验我...
  • ekkie
  • ekkie
  • 2016年05月08日 12:45
  • 1211
收藏助手
不良信息举报
您举报文章:30天编程练习(六)
举报原因:
原因补充:

(最多只允许输入30个字)