样例输出,陷阱的个数及职责

算法升高 一级玛丽  

  算法训练 整数平均值 

时刻范围:1.0s   内存限制:256.0MB

时光限定:1.0s  内存限制:512.0MB

    

   

题材讲述

编纂函数,求包涵n个因素的平头数组中元素的平均值。须求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值。

  我们都知晓”一流玛丽”是一个很善于跳跃的探险家,他的保留剧目是跳跃,但它一遍只好前进跳一步或两步。有一次,他要因而一条长为n的羊肠小道,小道中有m个陷阱,那么些骗局都位居整数地点,分别是a1,a2,….am,陷入其中则必死无疑。明显,要是有多个近乎的骗局,则玛丽是无论怎样也跳过不去的。
  现在交给小道的长度n,陷阱的个数及职分。求出玛丽从职分1开首,有些许种跳跃方法能抵达胜利的对岸(到达地方n)。

样例输入: (输入格式表达:5为输入数据的个数,3 4 0 0 2
是以空格隔开的5个整数)

输入格式

5

  第一行为多个整数n,m
  第二表现m个整数,表示陷阱的义务

3 4 0 0 2

出口格式

样例输出:

  一个平头。表示Mary跳到n的方案数

1

样例输入

样例输入:

4 1
2

7

样例输出

3 2 7 5 2 9 1

1

样例输出:

多少规模和约定

4

  40>=n>=3,m>=1
  n>m;
  陷阱不会放在1及n上

#include<stdio.h>

 

int main(){

诠释:思路简单,见代码注释。

int n;

 1 /*
 2 思路:
 3     设temp处有陷阱,且temp-1米处的方法数为:b[temp-1],则b[temp+1]=b[temp-1],且到temp+2处的方法数也为b[temp-1],即:b[temp+1]=b[temp-1]=b[temp+2].
 4 综上b[i]=b[i-1]+b[i-2];
 5     由题意知b[1]=b[2]=1;
 6     设有陷阱的i米处的方法数为b[i]=0。 
 7 */
 8 #include<stdio.h> 
 9 int main(){
10     int n,m;
11     scanf("%d%d",&n,&m);
12     int b[n], xianjing[m];//b[i]表示到第i米处的方法数
13     for(int i=0;i<=n;i++){//先将b赋初值
14         b[i]=1;
15     }
16     int flag=0;//标记是否有相邻的陷阱 
17     for(int i=1;i<=m;i++){
18         scanf("%d",&xianjing[i]);
19         b[xianjing[i]] = 0;//有陷阱的位置方法数为0
20         if(i>1)
21             if(xianjing[i]-xianjing[i-1]==1 || xianjing[i]-xianjing[i-1]==-1)
22                 flag=1;
23     }
24     if(flag==1)//若有相邻的陷阱,必死无疑 
25         printf("0");
26     else{
27         for(int i=3;i<=n;i++){
28             if(b[i]==0)
29                 continue;
30             else
31                 b[i]=b[i-1]+b[i-2];
32         }
33         printf("%d",b[n]);
34     }
35     return 0;
36 }

scanf(“%d”,&n);

 

int i,a[n],ave=0;

for(i=0;i<n;i++){

scanf(“%d”,&a[i]);

ave+=a[i];

}

printf(“%d”,ave/n);

return 0;

}

思路分析:

①定义变量:包括元素个数,循环次数,一维数组,总数(起先化为0);

②经过for语句循环n次输出数组元素并累加;

③求出平均值输出。

  算法磨练 薪给总括 

时刻限定:1.0s  内存限制:512.0MB

   

题材讲述

  编写一个先后,总括员工的周薪。报酬的乘除是以小时为单位,如果在七天的光阴内,员工工作的时光不当先40
个钟头,那么她/她的总收入等于工作时间乘以每小时的薪饷。如若员工工作的年月在40
到50 个小时时期,那么对于前40
个钟头,仍按正常形式总计;而对于剩下的超额部分,每小时的薪俸按1.5
倍总括。即使职工工作的时刻超越了50 个钟头,那么对于前40
个小时,仍按正常方法计算;对于40~50 个钟头之内的部分,每时辰的薪饷按1.5
倍总计;而对此超越50 个钟头的有的,每时辰的薪俸按2
倍计算。请编写一个主次,输入员工的干活时间和每小时的薪给,然后计算并浮现他/她应当得到的周薪。

  输入格式:输入唯有一行,包含一个整数和一个实数,分别表示工作时间和每时辰薪俸。

  输出格式:输出只有一个实数,表示周薪,保留小数点后2位。

  输入输出样例

样例输入

40 50

样例输出

2000.00

#include<stdio.h>

int main(){

int n;

double m,s=0.0;

scanf(“%d%lf”,&n,&m);

if(n<=40) s=n*m;

if(n>40 && n<=50) s=40*m+(n-40)*1.5*m;

if(n>50) s=40*m+15*m+(n-50)*2*m;

printf(“%.2f”,s);

return 0;

}

思路分析:

①定义变量:工作时间,每小时薪金,总薪金(初叶化为0);

②用if语句根据标题分为3类,并交付相应的总报酬:小于40,40到50,大于50;

③输出总报酬;

  算法磨炼 计算字符次数 

时刻限定:1.0s  内存限制:512.0MB

   

  输入一个字符串(长度在100以内),总计其中数字字符出现的次数。

样例输入

Ab100cd200

样例输出

6

#include<stdio.h>

int main()

{

    char a[101];

    int i=0,s=0;

    gets(a);

    for(i=0;*(a+i)!=’\0′;i++)

    {

        if(*(a+i)>=48&&*(a+i)<=57)

        s++;

    }

    printf(“%d”,s);

return 0;

}

思路分析:

①定义变量:字符串(一维数组),次数,数字个数(开端化为0);

②输入字符串;

永利娱乐网址,③for语句循环,直到字符为0,用if语句判断是或不是为数字,要是是数字个数加1;

④输出数字个数。

#include <iostream>

#include <string>

using namespace std;

int main() {

string s;

cin >> s;

int cnt = 0;

for(int i = 0; i < s.length(); i++) {

if(isdigit(s[i]))

cnt++;

}

cout << cnt;

return 0;

}