30天编程练习(六)

原创 2018年04月15日 19:38:49

1021 函数题

解析:题目理解起来比较复杂,但找到规律可以发现其实就是对3取模


#include <iostream>  

using namespace std;  
int main()  
{  
    int n;  
    while(cin>>n)  
    {   
        if(n%4==2)  
        {  
            cout<<"yes"<<endl;  
        }  
        else  
            cout<<"no"<<endl;  
    }  
    return 0;  




1022 火车入站问题1

题意:假设A入站之后B也入站,则A不能离开直到B离开。

解析:本题是一个对栈的应用题,每次判断将要入站的火车和输出序列的首元素是否相同,若相同,则入站出站;否则判断栈顶元素和首元素,相同则出栈,不相同则压入,继续重复上述步骤。

#include <stdio.h>  
#include <string.h>  
#include <iostream>  
#include <stack>  
using namespace std;  
int main()  
{  
    int n,i,j,k;  
    char a[10],b[10],c[10];  
    while(~scanf("%d%s%s",&n,a,b))  
    {  
        getchar();  
        stack<char>s;  
        while(!s.empty())  
        s.pop();    
        i=j=k=0;  
        while(i<n)  
        {  
            s.push(a[i++]);  
            c[k++]=1;  
            while(!s.empty()&&s.top()==b[j])  
            {  
                s.pop();  
                j++;  
                c[k++]=0;  
            }  
        }  
            if(s.empty()==1)  
            {   
               printf("Yes.\n");  
               {  
                   for(i=0;i<k;i++)  
                   {  
                       if(c[i]==1)  
                          printf("in\n");   
                       else  
                          printf("out\n");  
                   }  
               }  
            }   
            else  
            {  
                printf("No.\n");  
            }  
        printf("FINISH\n");  
    }  
    return 0;  

}


1023 火车进站问题2

题意:本题和上一题差不多一样,这次求的是N辆严格递增输入的火车有几种出站情况

解析:用的卡特兰数加大数乘法,令h(0)=1,h(1)=1,catalan数满足递推式[1]:
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)


#include<stdio.h>
#include<string.h>
int main()
{
 int i,j,s,temp,n,k;
 int a[101][61];
 memset(a,0,sizeof(a));
 a[0][0]=0;a[1][0]=1;a[2][0]=2;
 for(i=3;i<101;i++)
 { 
  for(j=0,s=0,temp=0;j<61;j++)
  {
   temp=s+a[i-1][j]*(4*i-2);
   a[i][j]=temp%10;
   s=temp/10;


  }
  for(j=60,s=0,temp=0;j>=0;j--)
  {
   temp=s*10+a[i][j];
   a[i][j]=temp/(i+1);
   s=temp%(i+1);
  }


 }
 while(scanf("%d",&n)!=EOF)
 {
  k=60;
  while(k>=0&&a[n][k]==0) k--;
  for(i=k;i>=0;i--)
  printf("%d",a[n][i]);
  printf("\n");
 }
 return 0;

}



30天高效练习---总览

其实我也经常的扪心自问,怎么样才能让自己在工作和生活中表现的更加高效,怎么样能够以更好的心态来面对每天源源不断的事情,怎么才能更好的将事情分类并有秩序的做好。...
  • superkunkun
  • superkunkun
  • 2017-11-13 15:05:02
  • 200

ios7版 30天精通iPhone手机编程

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

Oracle 单行函数练习

在看完Oracle单行函数之后的练习题,巩固一下知识。先回顾雇员表表的所有数据SECLECT * FROM emp; 1、找出个月倒数第三天受雇的所有员工 · 在emp表中跟雇佣日期有关的字段是 h...
  • ShunXiangL
  • ShunXiangL
  • 2016-09-04 23:08:11
  • 919

30天学通Java项目案例开发(完整源代码)

  • 2014年01月08日 23:05
  • 22.02MB
  • 下载

30天编程练习(四)

1013 求数根 题意:各个位数相加,求得的结果再各位数相加,直到取得个位数 解析:1 、要用字符串的形式输入,防止大数     2、 循环求%10,在求和  #include&amp;lt;iost...
  • zyc12321
  • zyc12321
  • 2018-04-09 00:10:08
  • 9

30天编程练习(第一天)

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

30天编程练习(二)

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

30天编程练习(三)

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

30天编程练习(七)

1029 求特殊整数题意:给出一个奇数N,再给出一串整数,找出在这串整数中出现次数大于(N+1)/2的整数,即特殊整数解析:使用快速排序排好之后,取中间位置那个数肯定就是要找的数,因为出现次数一定会满...
  • zyc12321
  • zyc12321
  • 2018-04-17 23:00:53
  • 3
收藏助手
不良信息举报
您举报文章:30天编程练习(六)
举报原因:
原因补充:

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