C2第四次作业解题报告
来源:互联网 发布:体育产业发展数据 编辑:程序博客网 时间:2024/05/19 07:43
http://www.cnblogs.com/newbe/
http://www.cnblogs.com/newbe/p/4069834.html
http://www.cnblogs.com/newbe/p/4072005.html
求赞求祝福啊!!!
http://www.cnblogs.com/newbe/p/4058097.html
软工老师太狠心,还请可怜一下同课不同命的我们吧~点一下文章末尾的推荐什么的呗,有个回复什么的就更好了!
1、多项式运算
没什么好说的,难点主要在读入部分,其实就是简单的模拟,可以使用sscanf来从字符串中格式化读入东西,每一项的种类有%dx%d";x%d;%dx;x;%d;注意判断下+-号什么的就ok了
2、选排列
老生常谈的题,n只有9,单纯的深搜即可,vis[]记录是否已经出现,res[]记录每一位分别是几,搜到底输出
3、求倍数
第四次相对有点技术含量的题,答案有500位,显然不能大数模板套暴力求解
其实从1<=N<=4999可以看出这是个构造题,就是用指定的digit构造出一个N的倍数的数
构造过程中会出现%N不为0的情况,那么假设某次构造出了一个数他%N为x != 0,那么从这个数继续向下构造时候,假设后位补的是y,那么产生的新的数%N = (x*10 + y)%N
那么可以看出我们可以通过用%N的余数限制时间复杂度,因为对于给定的余数为同一个x的不同的数,其向后继续构造的时候产生的数的余数序列是一样的,相当于做了重复的工作,那么我们只要保证下一个构造出的余数之前没有出现过即可顺利用广搜搞定此题
4、重复数全排列
开始以为是老生常谈的题,但是由于too young,字符串的长度小于100
贴一下超时代码..只能解决短排列
<span style="font-size:14px;">#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#define RD(x) scanf("%d",&x)#define RD2(x,y) scanf("%d%d",&x,&y)#define clr0(x) memset(x,0,sizeof(x))typedef long long LL;int n,vis[1005];char s[1005],ans[1005];void dfs(int now){int i;if(now == n){ ans[now] = '\0';puts(ans);return;}int pre=-1; for(i=0;i<n;++i) { if(!vis[i] && s[i]!=pre) { vis[i]=1; ans[now]=s[i]; pre=s[i]; dfs(now+1); vis[i]=0; } }}void work(){ scanf("%s",s); n = strlen(s); clr0(vis); dfs(0);}int main(){work();return 0;}</span>
其实也不难解决,只要开个map记录26个字符对应的个数,每次dfs之前确定还有相应字符并吧cnt--,dfs完成后++回来即可
5、矩阵乘法A
又是这种奇怪输入的题,由于中间有空行,还是没什么难的地方,是用sscanf可以轻松解决
- C2第四次作业解题报告
- C2第六次作业解题报告
- C2第五次作业解题报告
- C2第七次作业解题报告
- C2第八次解题报告
- C2第九次解题报告
- C2第十次解题报告
- c++第四次作业报告
- C++第四次作业报告
- c++ 第四次实验--作业报告
- C++第四次实验-作业报告
- 第四次练习赛解题报告及标程
- 北京航空航天大学2014第四次上机解题报告
- C++第四次实验-作业报告(2,3,4)
- c++第四次作业报告 项目2.3.4
- 第四次作业
- 第四次作业
- 第四次作业
- 用git 的网址
- U7B0 FkFY8ugg雪靴 OcT9 X8V
- 5Crn XujGIugg w4cD TdE
- qUQW l4oy3nike官網 46oG Jwh
- android Menu与ActionBar和TitleBar浅析
- C2第四次作业解题报告
- Mysql 不同版本 说明
- C2第五次作业解题报告
- mos 电容 跨导总结
- 从事编程后,让我最快乐的十件事
- php中&符号什么意思
- 适合初学者Oracle的学习
- 有关毕业设计--软件规划
- java基础-用IO演示文件的复制过程(学习笔记)