1128

8皇后问题:任意两个皇后不能在同一个竖线、横线、斜线上
判断是否是N皇后成立

#include<stdio.h>
#include<math.h>
int main(){int k;scanf("%d", &k);for(int i=0;i<k;i++){int n;scanf("%d", &n);int a[1005];bool table[1005] = {false};bool flag = true;for(int j=1;j<=n;j++){scanf("%d", &a[j]);if(table[a[j]] == false){//检查是否有在同一列的 table[a[j]] = true;}else{flag = false;//printf("1 ");}}for(int p=1;p<=n;p++){//检查是否在一个对角线 for(int q=p+1;q<=n;q++){if(abs(p-q) == abs(a[p]-a[q])){flag = false;break;} }}if(flag) printf("YES\n");else printf("NO\n");}return 0;
}

1129 STL

题目大意: 根据物品被用户接受的次数来计算推荐指数。
一开始用的map,因为map的值不好排序,又转化到vector,再用sort排序。这样会超时。

#include<stdio.h>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;typedef struct node{int id;int count;
}node;bool cmp(node a, node b){if(a.count == b.count){return a.id < b.id;}return a.count > b.count;
}int main(){int n,k;scanf("%d %d", &n, &k);int q;scanf("%d", &q);map<int, int> mp;mp[q]++;for(int i=1;i<n;i++){scanf("%d", &q);printf("%d:",q);vector<node> v;map<int, int>::iterator iter;for(iter = mp.begin(); iter!=mp.end();iter++){node temp;temp.id = iter->first;temp.count = iter->second;v.push_back(temp);}sort(v.begin(), v.end(), cmp);for(int j=0;j<k && j<i;j++){printf(" %d",v[j].id);}mp[q]++;printf("\n");}return 0;
}

参考柳婼 の blog,应该重载set运算符:

#include <iostream>
#include <set>
using namespace std;
int book[50001];
struct node {int value, cnt;bool operator < (const node &a) const {return (cnt != a.cnt) ? cnt > a.cnt : value < a.value;}
};
int main() {int n, k, num;scanf("%d%d", &n, &k);set<node> s;for (int i = 0; i < n; i++) {scanf("%d", &num);if (i != 0) {printf("%d:", num);int tempCnt = 0;for(auto it = s.begin(); tempCnt < k && it != s.end(); it++) {printf(" %d", it->value);tempCnt++;}printf("\n");}auto it = s.find(node{num, book[num]});if (it != s.end()) s.erase(it);book[num]++;s.insert(node{num, book[num]});}return 0;
}

1130 中缀表达式

题目大意: 给出二叉树,输出中缀表达式 ,并加上括号表示运算的优先级

题目中说 data is a string of no more than 10 characters
当我数组设为10时就出现了运行时错误,将数组范围扩大到15就全对了。。

#include<vector>
#include<string.h>
#include<string>
#include<iostream>
using namespace std;typedef struct node{char data[15];int left,right;
}node;int n;
vector<node> v;
bool table[100] = {false};
string ans = "";
int root;void inorder(int x){if(v[x].left != -1){if( x!= root ) ans += "(";inorder(v[x].left);}else if(v[x].right != -1 && x!= root){ans += "(";}ans += v[x].data;if(v[x].right != -1){inorder(v[x].right);if( x!= root ) ans += ")";}return;
}int main(){cin>>n;v.resize(n+5);for(int i=1;i<=n;i++){char d[15];int l,r;cin>>d>>l>>r;strcpy(v[i].data, d);v[i].left = l;v[i].right = r;table[l] = table[r] = true;}//首先找到根节点 for(int i=1; i<=n; i++){if(table[i] == false){root = i;break;}} inorder(root);cout<<ans;return 0;
}

1131 DFS

题目大意: 给出乘客的起点,找到途经停站最少的路线;如果经停站一样多,则取需要换乘线路次数最少的路线。

#include<stdio.h>
#include<vector>
#include<map>
#include<string>
using namespace std;typedef struct node{int line;  //属于哪条线路int id;  //下一个站点名
}node;int n;  //n<=100  地铁线数
int start, endd;
map<int, bool> mp;
vector< vector<node> > v(10000);
int min_stations, min_lines;
vector<node> temp;//记录路径
vector<node> ans;//记录最终路径 void dfs(node x, int stations, int lines, int old_line){if(mp[x.id] == true){return;}if(x.id == endd){if(x.line != old_line){lines++;}bool flag = false;if(stations < min_stations){min_stations = stations;min_lines = lines;flag = true;}else if(stations == min_stations && lines < min_lines){min_lines = lines;flag = true;}if(flag){ans.clear();node t;t.id = start;t.line = -1;ans.push_back(t);for(int i=0;i<temp.size();i++){ans.push_back(temp[i]);}ans.push_back(x);}return;}mp[x.id] = true;temp.push_back(x);if(x.line != old_line){lines++;}for(int i=0;i<v[x.id].size();i++){dfs(v[x.id][i], stations+1, lines, x.line);}mp[x.id] = false;temp.pop_back();
}int main(){scanf("%d", &n);for(int i=1;i<=n;i++){int m;  //m<=100 站点数scanf("%d", &m);int st;scanf("%d", &st);for(int j=1;j<m;j++){int end;scanf("%d", &end);node temp;temp.id = end;temp.line = i;v[st].push_back(temp);temp.id = st;v[end].push_back(temp);st = end;}}int k;  //k<=10  queryscanf("%d", &k); for(int i=0;i<k;i++){scanf("%d %d", &start, &endd);min_stations = 99999, min_lines = 999;mp.clear();mp[start] = true;for(int j=0;j<v[start].size();j++){dfs(v[start][j], 1, 1, v[start][j].line);}printf("%d\n", min_stations);int first = start;for(int j=1;j<ans.size();j++){if(ans[j-1].line != ans[j].line && j != 1){printf("Take Line#%d from %04d to %04d.\n", ans[j-1].line, first, ans[j-1].id);first = ans[j-1].id;}}printf("Take Line#%d from %04d to %04d.\n", ans[ans.size()-1].line, first, ans[ans.size()-1].id);}return 0;
}

PAT A 1128 1129 1130 1131相关推荐

  1. [MATLAB调试笔记]phase space plot

    function hdiag = plotphs(hdiag, n, jdiag,particle, prm,ren) % % phase space plot % n:速度对应的第n个分量 %npt ...

  2. 使用api制作我的足迹地图

    查看我的足迹 很早的时候看到别人博客的足迹地图,就想着自己也搞一个,但是没找到相关的技术文章.不知道从何下手,前两天有了思路就做了起来.可以网上找地图的素材也可以用百度高德的开放平台做,还有一些其他的 ...

  3. Hue 之 SparkSql interpreters的配置及使用

    1.环境说明: HDP 2.4 V3 sandbox hue 4.0.0 2.hue 4.0.0 编译及安装 地址:https://github.com/cloudera/hue/releases/t ...

  4. 数学黑洞6174问题

    import java.io.*; class Class61742{ static String str=""; final int HOLE=6174; public int[ ...

  5. Mysql5.6 Performance_schema 深入浅出

    转载自: https://keithlan.github.io/2015/07/17/22_performance_schema/ 目录结构 22.1 performance Schema 快速入门 ...

  6. 《经典算法案例》01-10:如何打印质数表(六列版)

      <经典算法案例> 01-10:如何打印质数表(六列版) 本文通过表格的形式罗列出了0~9999的自然数,以及在此区间内的所有质数,方便大家观察和研究. 提示:源码在文章末尾. 1.图示 ...

  7. TamerMonkey 百度直接下载助手

    1.首先打开https://greasyfork.org/zh-CN ,然后安装一个用户脚本管理器 Greasy Fork Chrome内核的浏览器直接下载Chrome的用户脚本管理器就行,例如QQ浏 ...

  8. 《NLTK基础教程》读书笔记 006期

    因为utf-8的问题,所以经常会出现下列报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 6325: ille ...

  9. qgmt数据,就差白城后面的一个城市有点问题

    # -*- coding:utf-8 -*- # 仅需修改这个地方https://jn.lianjia.com/ershoufang/pg{}rs/ 将jn换成你所在城市的拼写首字母小写 import ...

最新文章

  1. 30个在线学习设计与开发的站点
  2. C++面试知识点总结
  3. java automapper 使用_19.AutoMapper 之开放式泛型(Open Generics)
  4. 为什么单片机程序中会有延时程序加入
  5. CentOS查看CPU、内存、网络流量和磁盘 I/O
  6. 阿里达摩院实习生立功!何恺明Mask R-CNN精度提升,一半输入数据量就行 | CVPR2020...
  7. STM32 基础系列教程 0 - CubeMX 下载与安装
  8. cocos2d-x游戏开发(六)自动释放池
  9. 【在路上4】在派件时效分析中剥离有效因素
  10. 【Python】Scrapy的安装与使用
  11. Bash、Terminal通过tab忽略大小写自动补全命令行提示
  12. Java-控制台接受用户输入数据的方法
  13. css音乐播放器插件,jQuery MPlayer音乐播放器插件
  14. 就业管理系统(Java毕业设计:SpringBoot项目)
  15. 研究生联系导师需要注意什么
  16. 罗生门:动荡时代下人性的恶与善
  17. 比较超声与临床体检检查早期关节炎患者手部屈肌腱腱鞘炎
  18. 安卓机更新系统会卡吗_手机经常提示系统升级,到底要不要升级,看完你就明白了!...
  19. 全国统考英语计算机多少分及格,远程教育统考英语考试合格分数线标准如何
  20. 毕业设计 手写数字识别算法研究与实现(源码+论文)

热门文章

  1. 汝州九峰山下自产自销的好蜂蜜
  2. 讯飞离线语音合成接入
  3. MSELoss(均值损失)
  4. [Practical.Vim(2012.9)].Drew.Neil.Tip16学习摘要
  5. 计算机毕业学游戏设计师,学游戏设计有前途吗
  6. java循环输出abcd_java 输 abcd 输出其所有排列情况 permutate
  7. AppStore预览视频AppPreviews制作总结
  8. 寇祖伟:释永信让我更加佛心向前!
  9. [图]Microsoft Word 历史版本纵览
  10. 计算机教师格言座右铭,教师格言座右铭100句