先暂时写必做30道题 只放思路和核心部分

(写的繁琐但易理解)

觉得有用的看官点个赞可好?

(citrl + F 查找功能)

1.合法栈输出1060


记住数据输入是以EOF结束输入
基本思路 :回溯暴力
从1开始到n
每一步只有三种可能
1.出栈
2.入栈
3.不进不出,对栈进行出栈处理

map<string,int> Map;//哈希表功能void dfs(int x,stack<int> q1,vector<int> tem)
{if(x==m+1)//终止条件{while(!q1.empty()){tem.push_back(q1.top());q1.pop();}string s; for(int i =0;i<tem.size();++i){if(tem[i]==10)s=s+"10#";else {char c=tem[i]+'0';s=s+c;}//此部分为记录答案形式为string存在map里面}if(Map.find(s)==Map.end())//map的防止重复{ans.push_back(tem);Map[s]=1;}return ;}for(int i= 0;i<=2;++i){if(!i) // 出栈{vector<int> tem1;tem1=tem; tem.push_back(x);dfs(x+1,q1,tem);tem=tem1;}else if(i==1)// 入栈{stack<int> q;q=q1;q1.push(x);dfs(x+1,q1,tem);q1=q;}else if(!q1.empty()) //数字不进不出,对栈处理{vector<int> tem1;tem1=tem;tem.push_back(q1.top());q1.pop();dfs(x,q1,tem);tem=tem1;}}
}

2.简单的最小数1065


注意 排序从大到小,然后去掉是不行的,因为一个数在占高位的权重你是没办法做到比较的
给个例子
8 3
16347895 从大到小排序去掉 16345
正确答案 13475
基本思路:贪心思想,一共有n-k位数剩余
从最高位开始 每次选最小数直到选出所有

第一次选第一位的区域为0-k(记选第i位的数),然后k减去对应的值
随后第二次选的区域为[i+1,i+1+k] ,
依次类推直到选出所有的数
记得if(s.length()-j==k) return; 剩下的数可以全部删掉肯定全部删掉最优

#include <iostream>
#include <cstdlib>
#include <cassert>
using namespace std;
string ans="";int findmin(string s)
{int minn=s[0]-'0',id=0;for(int i = 0;i<s.length();++i){if(minn>(s[i]-'0')){minn=s[i]-'0';id=i;}}return id;
}void getRemain(string s,int k,int weishu)
{int j=0;for(int i = 0;i<weishu;++i)//选出n-k位数{if(s.length()-j==k) return;string s1= s.substr(j,k+1);//可选的区间 更新j=j+findmin(s1);ans=ans+s[j];++j;k=k-findmin(s1);}
}int main()
{int n,k;while(scanf("%d%d",&n,&k)!=EOF){string s;cin>>s;ans="";getRemain(s,k,n-k);while(ans[0]-'0'==0&&ans.size()>=2)//去前导0{ans=ans.substr(1);} cout<<ans<<endl;};
}

3.简单的统计1156 (大水题过)


标注一下答案要换行

4.幸运数字1240(大水题)

bool check(int x)
{int mod=0;int tem=x; while(x){mod+=x%10;x/=10; }if(tem%mod==0) return 1;else return 0;
}

5.矩阵乘法1209


基本思路:基本题目,推荐struct 重载运算符做

struct lth
{int num[101][101];lth * operator * (lth a)const{lth * tem= new lth;for(int i=1;i<=n;++i)for(int j=1;j<=m;j++){for(int o=1;o<=k;++o){tem->num[i][j]+=num[i][o]*a.num[o][j];//乘法}}        return tem;}bool operator == (lth  a)const{for(int i=1;i<=n;++i)for(int j=1;j<=m;j++)if(a.num[i][j]!=num[i][j]) return 0;return 1;}
};

6.画菱形1249(大水题过)

基本模拟根据循环变量输出
注意每个数据相差一个换行
行末不能多余空格

(去他个小杰瑞)

7.面试1252

注意:行末不能有空格(去他个小杰瑞)

for(int j=0;j<n-1;j++){cout<<a[((j-k)+n)%n]<<" ";}

8.Three1262(图片还没好,于是我百度)

//自己找四片纸,找规律即可
#include<iostream>
using namespace std;int T;
int main(){cin >> T;while(T--){int a, b, c, d;cin >> a >> b >> c >> d;if((a == 1 && b == 2) || (a == 2 && b == 3) || (a == 3 && b == 1)) cout << "YES" << endl;else if((c == 1 && d == 3) || (c == 2 && d == 1) || (c == 3 && d == 2)) cout << "YES" << endl;else cout << "NO" << endl;}return 0;
}//presented by 大吉大利。今晚AC

9.Alice的车牌号1279


题目的问题
答案应该是以下(英文’与中文’)
车牌号中,样例给的是全角’,题目要求输出的是半角’

 if(!sym) cout<<": Yes, I like it!"<<endl;else cout<<": No, it's terrible!"<<endl;

10.最低等级1283 进制转换

string itoa_to(int tem)
{string s;while(tem){s=s+char(tem%2+'0');tem/=2;}return s;
}

11.中位数1316(大水题)

排序找
注意保留2位小数

 printf("%.2f\n",ans);

12.一加二减三1337(大水题过)

13.最短路1328

基本图论题

输入莫名其妙的麻烦复制粘贴就好了
开longl ong
这里要用链式前向星(矩阵会爆掉)【不会的去百度下基本储存图论吧】

struct lth
{ll u,v,next,first,w;
}e[10001000];

算法因为单元最短路径 且为密集图 使用Djstla

void Djstla(int x)
{priority_queue<ll,vector<ll>,greater<ll> > q;dis[x]=0;q.push(x);while(!q.empty()){ll u=q.top();q.pop();if(!tag[u]){//cout<<u;tag[u]=1;for(ll i=e[u].first;i;i=e[i].next){ll v=e[i].v,w=e[i].w;dis[v]=min(dis[v],dis[u]+w);//cout<<v<<endl;q.push(v);}}}
}

14.回文数1331


挺麻烦的一道题目
建议这用开存储

struct lth
{int num[100]={0};
};

字符串处理单个字符不能超过10,会出大问题

         for(int i=0;i<now;++i){e1->num[i]=e2.num[now-i-1];    //反转}for(int i= 0;i<now;++i)//高精度加法{e2.num[i]+=e1->num[i];e2.num[i+1]+=e2.num[i]/10;e2.num[i]%=10; }while(e2.num[now])//最高位进位问题{e2.num[now+1]+=e2.num[now]/10;e2.num[now]%=10;++now;}

15.蛇形阵1332

高中时候就做过这道题,巨麻烦
我一直想问候全网第一个出这个题目的人
(**********************************)
但这道题有很多限制还比较简单
模拟题没算法就不贴出来了(最好自己做,不然考试考到就GG)
注意:printf("%4d",f[i][j]);输出格式

16.一加二减三1337(大水题过)重了

17.六六六星人1341


这道题就是单纯的排序
推荐使用

sort(e + 1, e + 1 + n, cmp);//重载cmp
struct lth
{string s;int id = 0;
};
bool cmp(lth a, lth b)
{string s1; string s2;int id1=0, id2=0;for (int i = 0; i < a.s.length(); ++i){if (a.s[i] <= '9' && a.s[i] >= '0'){s1 = a.s.substr(i);id1 = i;break;}}for (int i = 0; i < b.s.length(); ++i){if (b.s[i] <= '9' && b.s[i] >= '0'){s2 = b.s.substr(i);id2 = i;break;}}//寻找数字分界点// id没有任何含义,只是为了return 时可以比较a,b,从而不会报错if (s1.length() != s2.length()){if (s1.length() > s2.length()) { b.id = 1; a.id = 0; return b.id < a.id; }else { b.id = 0; a.id = 1; return b.id < a.id; }}else{for (int i = 0; i < s1.length(); ++i){int a1 = s1[i] - '0', b1 = s2[i] - '0';if (a1 == b1) continue;if (a1 > b1) { b.id = 1; a.id = 0; return b.id < a.id; }else { b.id = 0; a.id = 1; return b.id < a.id; }}}s1 = a.s.substr(0, id1);s2 = b.s.substr(0, id2);if (s1.compare(s2) > 0) { b.id = 1; a.id = 0; return b.id < a.id; }else { b.id = 0; a.id = 1; return b.id < a.id; }
}

18.First Blood1343(数论题)

没啥好说的,这些数论题能否做出来真的很靠数学敏感

因为本题目中要求最小公倍数的最大值,那么可以直接从N向前看,找三个连续的互为质数的数,那么它们的乘积便是1~N最小公倍数的最大值。
有以下二种情况。
(1)当N为奇数时,那么N,N-1,N-2互为质数,很明显NN-1N-2是1~N最小公倍数的最大值。
(2)当N为偶数时,且能被3整除时,N-1,N-2,N-3互质,此时N-1N-2N-3是1~N最小公倍数的最大值
当N为偶数时,但不能被3整除时,N,N-1,N-3互质,此时NN-1N-3是1~N最小公倍数的最大值。
注意:开long long

19.求和1344


k为半个周期
一个周期的值为 k*k

    long long tem = n / (2 * k);ans = tem * (k * k);//超出周期的暴力算

分界线-----------------------------------------------分界线
接下来比较简单 浅水区

20.数71345


模拟题 没啥可说的
大胆的暴力写

21.进制转换II 1602

将2进制数转换成10进制数

 string s;cin >> s;ll ans = 0;for (int i = 0; i < s.length(); ++i)if (s[i] - '0' == 1) ans += pow(2, i);

22.进制转换IV 1604

将8进制数转换成10进制数

string itoa_to(int tem)
{string s;while (tem){s = s + char(tem % 2 + '0');tem /= 2;}return s;
}for (int i = 0; i < s.length(); ++i)if (s[i] - '0' == 1) ans += pow(8, i);string s1 = itoa_to(ans);

23.数字反转II1607

给出一个有符号整数N,你需要将这个整数中每位上的数字进行反转。

string s;cin >> s;int sym = 0;if (s[0] == '-') {sym = 1; s = s.substr(1);}reverse(s.begin(), s.end());if (sym) cout << "-";cout << s;

24.数据检查1629

 double tem = i;double tem1 = sqrt(tem);int tem2 = sqrt(tem);if(tem1==tem2)ans++;

25.按序查找II1634

直接sort(a,a+n);输出

26.按序查找III 1635

直接sort(a,a+n);输出

27.字符转换 1641

for (int i = 0; i < s.length(); ++i){if (s[i] >= 'A' && s[i] <= 'Z') s[i] = s[i] - ('A' - 'a');}

28.回文串判断 1647

注意输入有个.

s = s.substr(0, s.length() - 1);s1 = s;reverse(s.begin(), s.end());for (int i = 0; i < s.length(); ++i){if (s[i] != s1[i]) { cout << "NO"; return 0; }}

29.数据查找1648(大水题过)

30.数据统计1649 (大水题过)

合肥工业大学oj 算法实训(1)【此后无良辰】相关推荐

  1. java合肥工业大学考试题库_合肥工业大学java程序设计实验二

    合肥工业大学java程序设计实验二 1 / 3<Java 程序设计>实验报告--实验 2实验室:三.四机房 2014 年 05 月 22日学院 计算机与信息学院 专业班级 姓名 成绩课程名 ...

  2. 合肥工业大学c语言是试卷,合肥工业大学2005-2007年C语言程序设计试卷参考答案.doc-资源下载人人文库网...

    合肥工业大学2005-2007年<C语言程序设计>试卷参考答案.doc 合肥工业大学2005年C语言程序设计试卷参考答案一. 填空题(分,每空1分)1main( ) 或主函数 21 7 3 ...

  3. 轻大数据结构与算法实训在线餐馆预订管理系统

    使用c++语言,用了两天实现所有功能,等写完报告后,整理一下遇到的问题和解决办法. 一共620行代码 任务书要求使用中文作为key,建立散列表,但是使用c++很难把中文转unicode编码,我找到的代 ...

  4. 产教融合育人才——华云数据与安徽建筑大学开展人才实训室合作洽谈会

    ​ 为进一步推进人工智能实训室的开展,加快信创人才培养,为中国声谷创新发展提供人才驱动.2021年12月23日,在安徽省经信厅软件服务业处处长余要火的带领下,华云数据有限公司安徽智能办公事业部总监汪月 ...

  5. 合工大计算机研究生毕业工资,合肥工业大学2019届薪酬统计

    合肥工业大学是一所好大学,学校位于安徽省,是教育部直属的全国重点大学.考生家长在报考合肥工业大学之前,应该了解一下合肥工业大学毕业生平均薪酬情况. 合肥工业大学的平均薪酬,本文整理的是合肥工业大学20 ...

  6. 大学计算机基础实训excel,大学计算机基础实训指导书

    摘要: <大学计算机基础实训指导书>分为8章,内容包括第1章介绍了计算机基础知识,主要内容包括计算机的发展,计算机系统的组成,信息在计算机中的表示等;第2章介绍了操作系统基础知识,主要内容 ...

  7. 武汉理工大学合肥工业大学 计算机,合工大为什么从985降到211?附合肥工业大学211地位(合工大不是985)...

    选择科目 测一测我能上哪些大学 选择科目 领取你的专属报告 > 选择省份 关闭 请选择科目 确定 v> 合肥工业大学是安徽省一所著名高校,简称"合工大",也是安徽211 ...

  8. c语言点菜菜单程序大学一,数据结构实训报告 c语言点餐系统 net

    <数据结构实训报告 c语言点餐系统 net>由会员分享,可在线阅读,更多相关<数据结构实训报告 c语言点餐系统 net(14页珍藏版)>请在人人文库网上搜索. 1.北京联合大学 ...

  9. 合肥工业大学2021离散数学上机实验一

    实验一:逻辑运算表示与验证 实验目的和要求 实验目的:理解命题逻辑相关运算,增强逻辑推理能力 实验要求: (1).从键盘输入命题常元的真值求他们的合取.析取.求反.异或.单条件. 双条件以及命题表达式 ...

最新文章

  1. OJ系列之---IP与整数之间的转换
  2. Java 中各种锁的介绍
  3. spring-retry_使用Spring-Retry重试处理
  4. svm机器学习算法_SVM机器学习算法介绍
  5. [BZOJ 2594] [Wc2006]水管局长数据加强版 【LCT】
  6. 二维数组(解引用、指针数组、数组的指针)——C语言
  7. Vrep脚本的执行顺序
  8. java中文乱码decode_JAVA中文字符乱码解决详解
  9. kaggle比赛语言java_Kaggle调查:2018年数据科学家最常用(和最推荐)的编程语言榜单...
  10. jsoup爬虫工具超简单使用(记录)
  11. java scanner构造函数_Java使用Scanner作为构造函数的参数
  12. ZED2+ORB_SLAM3
  13. t检验的p值对照表_R语言系列第四期:①R语言单样本双样本差异性检验
  14. 苹果开发者账号注册-您在注册时提供的地址无效或者不完整
  15. bili弹幕姬_bilibili弹幕姬怎么用 - 卡饭网
  16. 推荐一个可能是最全的Venn图一站式绘制工具
  17. 大一ACM比赛观摩感悟(比赛)
  18. 密集预测任务的多任务学习(Multi-Task Learning)研究综述 - 网络结构篇(上)
  19. 爆笑囧人囧事 2009 大合集!
  20. ABBYY FineReader:PDF转换、一键OCR、图片转文字等,OCR识别一遍帮你搞定。

热门文章

  1. 计算机操作系统(汤小丹、梁红兵)第四版课后习题答案(七)
  2. U-Boot启动流程(Linux内核)的分析(写得好)
  3. 联合国公布世界上最难学的十大语言
  4. IT外企那点儿事(14): 好领导和好员工,坏领导和坏员工,鸡生蛋还是蛋生鸡?
  5. html管理系统前端,oa管理系统前端静态页面
  6. 使用 Java 实现 BMI 指数测试
  7. Unity特效学习笔记——刀光
  8. 餐饮业管理系统(基于C++的)
  9. JaveWeb实战项目-超市管理系统
  10. Mac 上有哪些鲜为人知且极大提高效率的工具?