过程函数与递归

P1028 数的计算

题目描述

我们要求找出具有下列性质数的个数(包含输入的自然数 nn ):

先输入一个自然数 nn ( n \le 1000n≤1000 ),然后对此自然数按照如下方法进行处理:

  1. 不作任何处理;
  2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
  3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

输入输出格式

输入格式:

11 个自然数 nn ( n \le 1000n≤1000 )

输出格式:

11 个整数,表示具有该性质数的个数。

输入输出样例

输入样例#1: 复制

6

输出样例#1: 复制

6

说明

满足条件的数为

6,16,26,126,36,136

思路:递推;

 1 include<bits/stdc++.h>
 2 using namespace std;
 3 int dp[1005];
 4 int main(){
 5     int n;
 6     scanf("%d",&n);
 7     for(int i=0;i<=n;i++){
 8         dp[i]=1;
 9     }
10     for(int i=1;i<=n;i++){
11         for(int j=1;j<=i/2;j++){
12             dp[i]+=dp[j];
13         }
14     }
15     printf("%d\n",dp[n]);
16 } 

P1036 选数

题目描述

已知 nn 个整数 x_1,x_2,…,x_nx1?,x2?,…,xn? ,以及 11 个整数 kk ( k<nk<n )。从 nn 个整数中任选 kk 个整数相加,可分别得到一系列的和。例如当 n=4,k=3n=4,k=3 , 44 个整数分别为 3,7,12,193,7,12,19 时,可得全部的组合与它们的和为:

3+7+12=223+7+12=22

3+7+19=293+7+19=29

7+12+19=387+12+19=38

3+12+19=343+12+19=34 。

现在,要求你计算出和为素数共有多少种。

例如上例,只有一种的和为素数: 3+7+19=293+7+19=29 。

输入输出格式

输入格式:

键盘输入,格式为:

n,kn,k ( 1 \le n \le 20,k<n1≤n≤20,k<n )

x_1,x_2,…,x_n (1 \le x_i \le 5000000)x1?,x2?,…,xn?(1≤xi?≤5000000)

输出格式:

屏幕输出,格式为: 11 个整数(满足条件的种数)。

输入输出样例

输入样例#1: 复制

4 3
3 7 12 19

输出样例#1: 复制

1思路:搜索;
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[25];
 4 int n,k;
 5 int co=0;
 6 void dfs(int t,int ii);
 7 int main(){
 8     scanf("%d%d",&n,&k);
 9     for(int i=0;i<n;i++){
10         scanf("%d",&a[i]);
11     }
12     dfs(0,0);
13     printf("%d\n",co);
14 }
15 int sum=0;
16 int pan(int s);
17 void dfs(int t,int ii){
18     if(t==k){
19         if(pan(sum)){
20             co++;
21         }
22     }
23     else{
24         for(int i=ii;i<n;i++){
25             sum+=a[i];
26             dfs(t+1,i+1);
27             sum-=a[i];
28         }
29     }
30 }
31 int pan(int s){
32     for(int i=2;i<=sqrt(s);i++){
33         if(s%i==0){
34             return 0;
35         }
36     }
37     return 1;
38 }

P1149 火柴棒等式

题目描述

给你n根火柴棍,你可以拼出多少个形如“ A+B=CA+B=C ”的等式?等式中的 AA 、 BB 、 CC 是用火柴棍拼出的整数(若该数非零,则最高位不能是 00 )。用火柴棍拼数字 0-90?9 的拼法如图所示:

注意:

  1. 加号与等号各自需要两根火柴棍
  2. 如果 A≠BA≠B ,则 A+B=CA+B=C 与 B+A=CB+A=C 视为不同的等式( A,B,C>=0A,B,C>=0 )
  3. nn 根火柴棍必须全部用上

输入输出格式

输入格式:

一个整数 n(n<=24)n(n<=24) 。

输出格式:

一个整数,能拼成的不同等式的数目。

输入输出样例

输入样例#1: 复制

14

输出样例#1: 复制

2

输入样例#2: 复制

18

输出样例#2: 复制

9

说明

【输入输出样例1解释】

22 个等式为 0+1=10+1=1 和 1+0=11+0=1 。

【输入输出样例2解释】

99 个等式为:

0+4=4
0+11=11
1+10=11
2+2=4
2+7=9
4+0=4
7+2=9
10+1=11
11+0=11思路:枚举;
 1 #include<bits/stdc++.h>
 2 int a[20001]={6};
 3 int c[10]={6,2,5,5,4,5,6,3,7,6};
 4 int n;
 5 int sum=0;
 6 int i,j;
 7 int main(){
 8     scanf("%d",&n);
 9     for(i=1;i<=20000;i++){
10         j=i;
11         while(j>=1){
12             a[i]=a[i]+c[j%10];
13             j=j/10;
14         }
15     }
16     for(i=0;i<=10000;i++)
17         for(j=0;j<=10000;j++)
18             if(a[i+j]+a[j]+a[i]+4==n)
19                 sum++;
20     printf("%d\n",sum);
21 }

原文地址:https://www.cnblogs.com/dahaihaohan/p/9341791.html

时间: 2024-10-28 21:05:34

过程函数与递归的相关文章

洛谷-回文质数-过程函数与递归

题目描述 Description 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数; 输入输出格式 Input/output 输入格式:第 1 行: 二个整数 a 和 b .输出格式:输出一个回文质数的列表,一行一个. 输入输出样例 Sample input/output 样例测试点#1 输入样例: 5 500 输出样例: 571

洛谷-2的次幂表示-过程函数与递归

题目描述 Description 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001. 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2^0  所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如:1315=2^

洛谷-数的计算-过程函数与递归

题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3.加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入输出格式 Input/output 输入格式:一个自然数n(n<=1000)输出格式:一个整数,表示具有该性质数的个数. 输入输出样例 Sample input/output 样例测

(转载)你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用

你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用 5.1.5 函数的递归调用 在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能.例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在PowerSum()函数中,又调用Power()函数和Add()函数来计算每个数的平方并将两个平方加和起来成为最终的结果.除此之外,在C++中还存在另外一种特殊的函数调用方式,那就是在一个函数内部调用它自己本身,这种方式也被

你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用

5.1.5 函数的递归调用 在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能.例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在PowerSum()函数中,又调用Power()函数和Add()函数来计算每个数的平方并将两个平方加和起来成为最终的结果.除此之外,在C++中还存在另外一种特殊的函数调用方式,那就是在一个函数内部调用它自己本身,这种方式也被称为函数的递归调用. 函数的递归调用,实际上是实现函数的一种特殊方式.当递归函

紫书第4章 函数和递归

1  序 系统的整理下第四章的学习笔记.同上次一样,尽量在不依赖书本的情况下自己先把例题做出来.这次有许多道题代码量都比较大,在例题中我都用纯C语言编写,但由于习题的挑战性和复杂度,我最终还是决定在第五章开始前,就用C++来完成习题.不过所有的代码都是能在C++提交下AC的. 在习题中,我都习惯性的构造一个类来求解问题,从我个人角度讲,这会让我的思路清晰不少,希望自己的一些代码风格不会影响读者对解题思路的理解. 其实在第四章前,我就顾虑着是不是真的打算把题目全做了,这些题目代码量这么大,要耗费很

Python基础之内置函数和递归

本文和大家分享的主要是python中内置函数和递归相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.内置函数 下面简单介绍几个: 1.abs() 求绝对值 2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回  True 3.any() 如果 iterable 的任何元素为真,则返回  True .如果iterable为空,则返回  False 4.callable() 如果  object 参数出现可调,则返回  True ,否则返回  Fal

【学习ios之路:C语言】函数及递归的简单应用

函数定义: 返回值类型 函数名(形参列表){函数体(函数的实现内容)}; 函数定义的四种形式: //函数定义第一种形式: 无参数, 无返回值 void byMilk() { //如果没有参数,小括号必不可少. printf("没钱\n"); } //函数名的命名规范:由多个英文单词组成,除了第一个单词的首字母小写,其余单词首字母大写. //函数定义第二种形式,有返回值,无参数 float salary() { printf("同志们辛苦了\n"); return 0

IOS 阶段学习第七天笔记(函数、递归)

一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1  形参名1,形参类型2   形参名2.....){ 函数体://函数的实现 } 3)函数名要符合标示符的定义 4)函数的返回类型可为空,为空用void;也可以是其他数据类型. 5)void函数的调用:函数名(); void类型不能用任何类型去接收. 6)int 类型函数的调用:定义int类型的数据去接收函数的返回值,例如: int sum=add(x,y); 有时候也可以