ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:17.68KB ,
资源ID:10620819      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10620819.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西科大 算法分析1 完整代码.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西科大 算法分析1 完整代码.docx

1、西科大 算法分析1 完整代码数字模式的识别#include #include int b4000001;int main() int max, max_i; int n, t, i; while (scanf(%d, &n) = 1) memset(b, 0, 4000001); while (n- != 0) scanf(%d, &t); +bt+2000000; max = b0; max_i = 0; for (i=1; i max) max = bi; max_i = i; printf(%dn, max_i-2000000); return 0;凸包面积#include #inclu

2、de #include #include #define max 106 using namespace std;struct point int x, y;point spotmax, p0;/p1p2距离int dis(const point &p1, const point &p2) return (p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y);/p1在p1p2左侧bool compares(const point &p1, const point &p2) int t; t = (p1.x - p0.x) * (p2.

3、y - p0.y) - (p2.x - p0.x) * (p1.y - p0.y); if(t 0 | (t = 0 & dis(p1, p0) dis(p2, p0) return true; else return false;double area(point p1,point p2,point p3) /计算三角形面积; double s; s=(p1.x*(p2.y-p3.y)+p2.x*(p3.y-p1.y)+p3.x*(p1.y-p2.y)/2.0; return s;int main() int n, i, x, y, p,m; stack s; cinm; while(m-)

4、 cinn; for(i = 0; i spoti.xspoti.y; x = spot0.x; y = spot0.y; p = 0; for(i = 1; i n; i+) /寻找最左上的点 if(spoti.y = y & spoti.x x)|spoti.y y) x = spoti.x; y = spoti.y; p = i; /x,y为最做点,即p0确定 p0.x = x; p0.y = y; swap(spot0, spotp); sort(spot + 1, spot + n, compares); /将0、1、2 三个点压入堆栈 S s.push(p0); s.push(sp

5、ot1); s.push(spot2); point temp; for(i = 3; i 0)/i位于spott-1spott左侧 s.push(temp); /将temp重新压入栈中 break; s.push(spoti); /将i 压入栈中 double area = 0; temp = s.top(); s.pop(); area += (p0.x * temp.y - p0.y * temp.x)/2.0; while(!s.empty() area += (temp.x * s.top().y - temp.y * s.top().x)/2.0; temp = s.top();

6、s.pop(); if (n=2) area =0; if(area 0) area = -area; coutsetiosflags(ios:fixed)setprecision(1)areaendl; return 0; 翻煎饼#includeusing namespace std;int s1000;int main() int i,n,k=0; cinn; for(i=0l;isi; for(;n1;n-) int max=0,l=0; for(i=0;imax) max=si; l=i; if(l=0) k+=1; for(i=0;in/2;i+) int t=si; si=sn-1

7、-i; sn-1-i=t; else if(ln-1) k+=2; for(i=0;i(l+1)/2;i+) int t=si; si=sl-i; sl-i=t; for(i=0;in/2;i+) int t=si; si=sn-1-i; sn-1-i=t; coutkendl; 变位词#include#include#includeusing namespace std;int main() char s11000,s21000; int n,len1,len2; cinn; while(n-) cins1s2; len1=strlen(s1); len2=strlen(s2); sort(

8、s1,s1+len1); sort(s2,s2+len2); if(strcmp(s1,s2)=0) coutYesendl; else coutNoendl; Polynomial calculate#include int main()int i, n, x, sum, num22;scanf(%d%d, &n, &x);for (i = 0; i = 0; i-)sum = sum * x + numi;printf(%dn, sum);大整数乘法#include#includevoid main() int i,j,k,i1,m,i2,n,a205=0; long b,c,d; cha

9、r s1100,s2100; scanf(%d,&m); scanf(%s,s1); scanf(%s,s2); d=0; for(i1=0,k=m-1;i1m;i1+,k-) for(i2=0,j=m-1;i20) i+; ai=ai+d%10; d=d/10; n=i; for(i=n;i=0;i-)printf(%d,ai); printf(n);return 0;Gold Nuggets Distribution#include#include#define MAX 50000000#define MIN -50000000int main()int i;int n;int weigh

10、t;int min = MAX;int max = MIN;scanf(%d, &n);for (i = 0; i max)max = weight;if (weight min)min = weight;printf(%d %dn, max, min);return 0; The Dutch Flag Problem #include using namespace std; int main() int n,coutr=0,coutb=0,coutw=0,i; char a500005; cinn; for(i=0;iai; for(i=0;in;i+) if(ai=W) coutw+;

11、else if(ai=R) coutr+; else if(ai=B) coutb+; for(i=0;icoutr;i+) coutR; for(i=0;icoutw;i+) coutW; for(i=0;icoutb;i+) coutB; coutendl; return 0; PostOffice#include#includeusing namespace std;int f(int a) return an; int *a=new intn; int *b=new intn; for(i=0;iaibi; sort(a,a+n); sort(b,b+n); j=an/2; k=bn/

12、2; int l=0; for(i=0;in;i+) l+=f(ai-j)+f(bi-k); coutlendl;The Josephus Problem#include typedef unsigned int uint;int main()uint n;uint sum = 1;scanf(%d, &n);while(sum = n)sum = sum * 2;n = n 1;sum = n & sum;n = n & (sum);n = n | 0x0001;printf(%dn, n);return 0;Horner scheme#include int main()int i, n,

13、 x, sum, num22;scanf(%d%d, &n, &x);for (i = 0; i = 0; i-)sum = sum * x + numi;printf(%dn, sum);排列的字典序问题#include int main()int i, j, n, k, tmp, lens, labelNum = 15, label, iCount2, sum =0, iCount = 0, num14;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &numi);for (i = 0; i n - 1; i+)iCount = 0;for (j =

14、 i + 1; j numj)iCount+;if (iCount != 0)k = n - i - 1;iCount2 = 1;while(k 0)iCount2 *= k;k-;sum += iCount * iCount2;printf(%dn,sum);for (i = n - 2; i = 0; i-) if (numi numi+1)break;if (-1 != i) /如果全是降序可能越界,即 i = -1for (k = i + 1; k n; k+)if (numk numi)continue;if (numk labelNum)labelNum = numk;label

15、= k;tmp = numi;numi = numlabel;numlabel = tmp;lens = n - 1 - i;for (k = 1; k = lens / 2; k+)tmp = numi + k;numi + k = numn - k;numn - k = tmp;for (i = 0; i n; i+)if (i != n - 1)printf(%d , numi);elseprintf(%d n, numi);/最后输出也有空格Binary search#include int binSearch(int num, int n, int key)int low = 0,

16、high = n - 1, mid;while(high = low)mid = (high + low) / 2;if (nummid = key )return mid;else if (nummid key)high = mid - 1;elselow = mid + 1;return -1;int main()int i, n, key, iCount, num5000001;scanf(%d%d, &n, &key);for (i = 0; i n; i+)scanf(%d, &numi);iCount = binSearch(num, n, key);if (-1 = iCount

17、)printf(-1n);elseprintf(%dn, iCount + 1);return 0;俄式乘法#include #include int main()int a100;int n, m, i, sum = 0, iCount = 0;scanf(%d%d, &n, &m);while(1 != n)if (0 = n % 2)n /= 2;elsen = (n - 1) / 2;aiCount+ = m;sum += aiCount - 1;m *= 2;aiCount+ = m;sum += m;for(i = 0; i iCount; i+)if (i != iCount -

18、 1)printf(%d + , ai);elseprintf(%d = %dn, ai, sum);return 0;Pipeline#include #include #include using namespace std;int main()int sumDistance = 0, oilMount, oilCount, oil10001, i, j;cin oilMount;for (i = 0; i j oili;sort(oil, oil + oilMount);oilCount = oilMount / 2;for (i = 0; i oilMount; i+)sumDista

19、nce += abs(oiloilCount - oili);cout sumDistance endl;return 0;最近对问题#include #include #define INF 10000000001int main()int n, i, m, k, j, posX1001, posY1001;double min = INF ;scanf(%d, &n);for (i = 0; i n; i+)min = INF;scanf(%d, &m);for (k = 0; k m; k+)scanf(%d%d, &posXk, &posYk);for (k = 0; k m - 1; k+)for (j = k + 1; j (posXj - posXk) * (posXj - posXk) + (posYj - posYk) * (posYj - posYk)min = (posXj - posXk) * (posXj - posXk) + (posYj - posYk) * (posYj - posYk);printf(%.4fn, sqrt(min);return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1