笔试C基础题

笔试C基础题

ID:45590762

大小:150.09 KB

页数:35页

时间:2019-11-15

笔试C基础题_第1页
笔试C基础题_第2页
笔试C基础题_第3页
笔试C基础题_第4页
笔试C基础题_第5页
资源描述:

《笔试C基础题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、问题描述:八皇后问题是十九壯纪著名数学家岛斯于1850年提出的。问题是:在8*8的棋盘上摆放8个皇后,使其不能互相攻击,即任意的两个皇后不能处在同意行,同一列,或同意斜线上。可以把八皇后问题拓展为n皇后问题,即在nF的棋盘上摆放n个皇后,使其任意两个皇后都不能处于同一行、同一列或同一斜线上。问题分析:显然每-行可以而且必须放一个皇后,所以n皇后问题的解可以用一个n元向MX=(x1,x2......xn)表示,其中,仁isn且1

2、须满足的约束条件为:xi#xj;若两个皇后的摆放位置分别是(i,xi)和(j,xj),在棋盘上斜率为的斜线上,满足条件i-j=xi-xj;在棋盘上斜率为4的斜线上,满足条件i+Fxi+xj;综合两种情况,由于两个皇后不能位于同-•斜线上,所以,解向量X必须满足的约束条件为:卜xi

3、K

4、j-xj

5、回溯算法C非递归实现(可行则进,不行则换,换不成则退)#include#includeintx[100];boolplace(intk)〃考察皇后k放置在x[k]列是否发生冲突{inti;fo

6、r(i=1;i

7、

8、abs(k-i)==abs(x[k]-x[i]))returnfalse;returntrue;}voidqueue(intn){inti,k;for(i=1;i<=n;i++)x[i]=O;k=1;while(k>=1){刈k]=刈k]+1;//在下一列放置第k个皇后while(x[k]<=n&&!place(k))x[k]=x[k]+1;//搜索下一列if(x[k]<=n&&k==n)//得到一个输出{for(i=1;i<二n;i++)printf("%d

9、”,x[i]);//return;//若return则只求出其中一种解,若不return则可以继续回溯,求出全部的可能的解}elseif(x[k]<=n&&kvn)k=k+1;//放置下一个皇后else{x[k]=O;//M置x[k],回溯k=k-1;}}}voidmain(){intn;printf("输入皇后个数n:");scanf(”%d”,&n);queue(n);1.(0邛背包问题)有N件物品d1,……dN,每件物品重量为W1,・WN(Wi>0),每件物品价值为W,……VN(Vi>0)。从这N件物品屮选

10、部分物品製入背包,使背包内物品的总重量不超过背包的容量TOTAL,并使背包屮物品的总价值最高。(采用递归回溯求解)2.(多项式乘法)编写计算两个多项式相乘P(x)Q(x)=R(x)的函数:voidmuity(floata[],intm,floatb[],intn,floatc[],int*k);其小数组a[],b[],c[]分别存放三个多项式的系数,m,n,k分别是多项式P(x)、Q(x)、R(x)的次数,通过形参与实参的结合返回c[],k的值。3.(全部排列)给定n个不同的数字(n<10),利用递归方式编程求这n个

11、数字的全部可能的排列。要求包括:算法简介,源程序,对主要变量和重要语句的注释,运行结呆的说明1背包问题是一个非常有名的问题•可以这样叙述如下•假设有n件物品,记为d1,d2,d3,dn.对于每一种物品di(1==v3/w3>=v4/w4>=v5/w5,这样算法再考虑将物品放入背包时,首先考虑的是取单价尽可能高的物品,以使背包的价值尽量大.在以后的程序8.1中,也遵循这样的惯例.程序8.1背包问题的类knap的定义及背包问题的解法typedefstructwvm{floatweight;//当前的重量floatval;

12、//当前的价值intm;//当前考察的物品件数.}WVM;//解答空间树屮的结点类型.includeincludeusingnamespacestd;templateclassknap{friendvoidknapsack(knap&);public:knap(constTypewtotal,constintnum,Typep&value,Typeww1[],Typepv1[]);〜knap(){delete[]w;delete[]v;}private:Typepf(Typewremnant,inti);//从i+1

13、物品开始计算,背包的剩余重量remnant//可以达到的价值的最大上界.TypewTOT;//背包的重量限制,如上例为TOT为37.intn;//给定的物品件数,如上例为n为5.Typew*w;//n件物品的重量数组.Typep*v;//n件物品的价值数组.TypepY;//得到的背包最优价值,初值为0.};templateknap::knap

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。