版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计100 例之(31) :全排列问题例 31 全排列问题题目描述输出自然数1 到 n 所有不重复的排列,即n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。输入格式n(1 < n < 9)输出格式由1n组成的所有不重复的数字序列,每行一个序列。序列中每个数字占 5个宽度。输入样例3输出样例1 232 323 134 315 126 21( 1)编程思路。采用递归的方法来生成全排列。(2)源程序。#include <stdio.h>int a9,flag10=0;void dfs(int pos,int n)if (pos=n) / 已有 n 个
2、数for (int i=0;i<n;i+)printf("%5d",ai);printf("n");elsefor(int i=1;i<=n;i+)if(flagi)continue;apos=i;flagi=1;dfs(pos+1,n);flagi=0;int main()int n;scanf("%d",&n);dfs(0,n);return 0;习题 3131-1 选书本题选自洛谷题库( /problem/P1657 )题目描述学校放寒假时,信息学奥赛辅导老师有1,2,
3、3x本书,要分给参加培训的x个人,每人只能选一本书,但是每人有两本喜欢的书。老师事先让每个人将自己喜欢的书填写在一张表上。然后根据他们填写的表来分配书本,希望设计一个程序帮助老师求出所有可能的分配方案,使每个学生都满意。输入格式第 1 行:一个数x第2行第1+x行:每行两个数,表示 ai喜欢的书的序号输出格式只有一个数:总方案数total 。输入样例51 34 52 51 43 5输出样例2( 1)编程思路。编写递归函数 void dfs(int i,int n)表示第i个人在n本书中选择一本书。若第 j本书(1W jwn)没选(标记数组元素fj=1 )且第i个人喜欢这本书(数组元素aij的值
4、也为1),则第 i 个人选择第j 本书; 之后第 i+1 个人进行选择,递归调用dfs(i+1,n)。 若 n 个人均选择好,则计数。( 2)源程序。#include <stdio.h>int a2121,f21,cnt;/ aij第 i 个人喜欢第 j 本书void dfs(int i,int n) int j;for(j=1;j<=n;j+) if(fj && aij) / 这本书没选且第i 个人喜欢这本书fj=0; if(i=n) cnt+; else dfs(i+1,n); fj=1; int main() int n,i,x,y;scanf(&quo
5、t;%d",&n);for(i=1;i<=n;i+) scanf("%d%d",&x,&y); aix=1;aiy=1;fi=1; dfs(1,n); printf("%dn",cnt); return 0;31-2 差三角形问题描述观察下面的数字组成的三角形:31 45 6 2看出什么特征吗?1 )它包含了16 的连续整数。2)每个数字都是其下方相邻的两个数字的差(当然是大数减去小数)满足这样特征的三角形,称为差三角形。编写程序,找出由1n*(n+1)/2 共 n*(n+1)/2 个整数组成的一个差三角形。输入格
6、式一个正整数n。n w 6输出格式输出所有满足要求的差三角形。输出时,每个数字占4 列。每种解之间空一行。当无解的时候,请什么也不输出。输入样例4输出样例434 75 926 110837 28 979 1018410 611 7112 3 1094512768 1039( 1 )编程思路。先确定最后一行的值,即在1 n*(n+1)/2 这 n*(n+1)/2 个数中任意选取n 个元素进行全 排列。 之后,按差三角形的特征依次确定上面其它行的值。在确定值的过程中,若某个值已被使用,则不可能是问题的解。直接剪枝,进行下次搜索。( 2)源程序。#include <stdio.h>voi
7、d judge(int take,int n)int visited22; / 最多 6 行, 21 个数int num66,i,j,x;for (i=1;i<=n*(n+1)/2;i+)visitedi=0;for(i = 0; i < n; i+)numn-1i=takei;visitedtakei = 1;for (i=n -2; i>=0; i -)for (j = 0; j <= i; j+)x = abs(numi+1j - numi+1j+1); if(visitedx)return;if(x>=1 && x<= n*(n+1)
8、/2)visitedx = 1;numij = x;if (numn -10>numn -1n-1) return ; for (i = 0; i < n; i+)for(j = 0; j<=i; j+)printf("%4d",numij);printf("n");printf("n");void dfs(int take, int index,int vis,int n)int i, j;if (index=n)judge(take,n);return;for(i = 1; i <= n*(n+1)/2;
9、i+)if(!visi)visi = 1;takeindex= i;dfs(take, index+1,vis,n); visi = 0;int main()int n,take6,i;int vis22;scanf("%d",&n);for(i = 1; i <= n*(n+1)/2; i+) visi=0;dfs(take,0,vis,n);return 0;31-3 数字和问题描述写出一个1至n的排列ai,a2,an,然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置。下面
10、是一个例子:3 ,1,2,44,3,67,916最后得到16 这样一个数字。如果知道n和最后得到的数字的大小sum,请你求出最初序列ai,a2,an,这个序列为1至n 的一个排列。若答案有多种可能,则输出字典序最小的那一个。注意:本题字典序指的是1,2,3,4,5,6,7,8,9,10,11,12,而不是1,10,11,12,2,3,4,5,6,7,8,9。输入格式两个正整数 n,sum。n w I2,sumw 12345。输出格式输出包括1 行,为字典序最小的那个答案。当无解的时候,请什么也不输出。输入样例4 16输出样例3 1 2 4( 1)编程思路。以题目示例来说明。4 个数 a1 、
11、a2、 a3、 a4第 1 次得到:a1+a2、 a2+a3、 a3+a4第2 次得到:a1+a2+a2+a3、 a2+a3+a3+a4第3 次得到:(a1+a2+a2+a3)+(a2+a3+a3+a4)即最后总和为:a1+3*a2+3*a3+a4系数 1 、 3、 3、 1 正好四杨辉三角形的第4 行的值。因此,需要先求出杨辉三角形第n行的值,以便于最后总和的计算。生成 1n 的全排列,对生成的排列进行判断,看是否满足和值等于输入的sum, 如果找到的答案,置标记found 为 1 ,之后各排列直接返回。( 2)源程序。#include <stdio.h>int a12,flag13=0,y13=0;int n,sum,found=0;void dfs(int pos,int cursum)if (cursum>sum| found=1) return;if (pos=n)if (cursum=sum)for (int i=0;i<n;i+)printf("%d ",ai);printf("n");found=1;elsefor(int i=1;i<=n;i+)if(flagi)continue;apos=i;flagi=1;df
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京广播电视台校园招聘备考题库完整答案详解
- 厦门海峡投资有限公司2025年运营支持岗、软件开发岗、商务岗社会招聘备考题库及参考答案详解
- 西南医科大学附属医院2026年度第一轮人才招聘备考题库及一套答案详解
- 2025年生态实验小学科技副校长招聘备考题库完整参考答案详解
- 2025年皖北煤电集团公司掘进工招聘备考题库带答案详解
- 浙商银行福州分行2025年招聘备考题库附答案详解
- 广东省气象部门2026年气象类本科及以上高校毕业生广州专场公开招聘备考题库及参考答案详解一套
- 2025年莲湖区土门社区卫生服务中心招聘备考题库带答案详解
- 河北省2026年度定向选调生招录备考题库及一套参考答案详解
- 理解宽容课件
- 印刷ctp制版管理制度
- T-CWAN 0063-2023 焊接数值模拟热弹塑性有限元方法
- 2024鄂尔多斯市东胜国有资产投资控股集团有限公司招聘26人笔试参考题库附带答案详解
- 外研版(三起)(2024)三年级下册英语Unit 5 单元测试卷(含答案)
- 幼儿园防食物中毒安全主题
- 我的家乡四川南充
- 市场拓展与销售渠道拓展方案
- 工地大门施工协议书
- 文史哲与艺术中的数学智慧树知到期末考试答案章节答案2024年吉林师范大学
- 《物联网工程项目管理》课程标准
- 劳动合同英文版
评论
0/150
提交评论