顺序表ADT模板设计及简单应用:找匹配

时间限制: 1S类别: DS:线性表->线性表应用

问题描述:

输入范例:

100000
100000 99999 99998 99997 99996 99995 99994 99993 99992 99991 99990 99989 99988 99987 99986 99985 99984 99983 99982 99981 99980 99979 99978 99977 99976 99975 99974 99973 99972 99971 99970 99969 99968 99967 99966 99965 99964 99963 99962 99961 99960 99959 99958 99957 99956 99955 99954 99953 99952 99951 99950 99949 99948 99947 99946 99945 99944 99943 99942 99941 99940 99939 99938 99937 99936 99935 99934 99933 99932 99931 99930 99929 99928 99927 99926 99925 99924 99923 99922 99921 99920 99919 99918 99917 99916 99915 99914 99913 99912 99911 99910 99909 99908 99907 99906 99905 99904 99903 99902 99901 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149

输出范例:

100000,99999,99998,99997,99996,99995,99994,99993,99992,99991,99990,99989,99988,99987,99986,99985,99984,99983,99982,99981,99980,99979,99978,99977,99976,99975,99974,99973,99972,99971,99970,99969,99968,99967,99966,99965,99964,99963,99962,99961,99960,99959,99958,99957,99956,99955,99954,99953,99952,99951,99950,99949,99948,99947,99946,99945,99944,99943,99942,99941,99940,99939,99938,99937,99936,99935,99934,99933,99932,99931,99930,99929,99928,99927,99926,99925,99924,99923,99922,99921,99920,99919,99918,99917,99916,99915,99914,99913,99912,99911,99910,99909,99908,99907,99906,99905,99904,99903,99902,99901,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149

51

从题目可以观察出来这里用的算法是:哈希表

我的代码如下:

 1 //序表ADT模板设计及简单应用:找匹配
2 #include<iostream>
3 #include<cstring>
4 #include<sstream>
5 #include<vector>
6 #include<cstdlib>//atoi!
7 using namespace std;
8 template<class T>
9 int getCount(vector<T>& A, int N)
10 {
11 int ans = 0;
12 //哈希表法
13 vector<int>hash(N);
14 hash.assign(N + 1, 0);//先预留N+1的空间
15 typename vector<T>::iterator it = A.begin();//制造遍历迭代器
16 while (it != A.end())
17 {
18 hash.at(*it) = 1;//标记为1
19 it++;
20 }
21 it = A.begin();
22 while (it != A.end())
23 {
24 int temp = (int)*it;//要强制转换
25 hash.at(temp) = 0;//防止出现50+50=100的情况!
26 if (hash.at(N + 1 - temp) == 1)
27 {
28 ans+=1;
29
30 }
31 it++;
32 }
33
34 return ans;
35 }
36 int main()
37 {
38 vector<string>a;
39 vector<int>b;
40 int n;
41 cin >> n;
42 cin.get();//吸收一下回车
43
44 //从字符串中提取数 插入到vector b中
45 string str;
46 getline(cin, str);
47 stringstream room;
48 room.str(str);
49 string temp;
50 while (room >> temp)
51 {
52 a.push_back(temp);
53 }
54 for (int i = 0; i < a.size(); ++i)
55 {
56 int ttemp;
57 ttemp = atoi(a[i].c_str());
58 b.push_back(ttemp);
59 }
60
61 //遍历输出
62 for (int i = 0; i < b.size() - 1; ++i)
63 {
64 cout << b[i] << ",";
65 }
66 cout << b[b.size() - 1];
67 cout << endl<<endl;
68 int ans = getCount(b, n);
69 cout << ans;
70 return 0;
71 }

数据结构:DHU顺序表ADT模板设计及简单应用:找匹配的更多相关文章

  1. hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)

    基础数据结构——顺序表(2) Time Limit: 1000 MS    Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...

  2. C++顺序表(模板总结)

    C++顺序表(模板总结) 总结: 1.模板类的实质是什么:让程序员写出和类型无关的代码 2.模板的对象时什么:方法或者类 3.是对类中的一系列操作,提供一个不固定数据类型的方法 用模板做的类的时候要指 ...

  3. [Python] 数据结构--实现顺序表、链表、栈和队列

    说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...

  4. C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...

  5. [数据结构]C#顺序表的实现

    在数据结构的学习当中,想必C++可能是大家接触最多的入门语言了 但是C#的数据结构却很少看到,今天我写了一个C#顺序表的顺序存储结构 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是 ...

  6. 【PHP数据结构】顺序表(数组)的相关逻辑操作

    在定义好了物理结构,也就是存储结构之后,我们就需要对这个存储结构进行一系列的逻辑操作.在这里,我们就从顺序表入手,因为这个结构非常简单,就是我们最常用的数组.那么针对数组,我们通常都会有哪些操作呢? ...

  7. 数据结构:顺序表(python版)

    顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...

  8. 顺序表 C++模板实现

    #include <iostream> using namespace std; template <typename T> class list{ private: int ...

  9. 数据结构之顺序表,c#实现

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

随机推荐

  1. Windows Server 2012 在桌面上显示”我的电脑”

    转至:https://jingyan.baidu.com/article/f25ef2544f6883482c1b82e5.html Windows Server 2012 沒有快捷方式显示我的电脑到 ...

  2. MySQL 学习笔记(一)MySQL 事务的ACID特性

    MySQL事务是什么,它就是一组数据库的操作,是访问数据库的程序单元,事务中可能包含一个或者多个 SQL 语句.这些SQL 语句要么都执行.要么都不执行.我们知道,在MySQL 中,有不同的存储引擎, ...

  3. python面试_总结02_代码题

    - 代码题 1.创建一个函数,接收一个字符串参数,判断其做为Python标识符是否合法. 具体要求: 如果合法则输出 True,否则输出 False. 如果该字符串与Python内置的关键字,或Bif ...

  4. iOS 产品新需求,要让collectionView 的背景跟着Cell 一块儿动!!!

    标题如上!看如何解决 最近产品经理来需求了,就像标题上的一样,要求,给collectionView添加一个背景,并且这个背景,还能跟着cell滑动这么一个效果,这个需求把我看懵了,让我不知所措,这该如 ...

  5. 在 k8s 以外的分布式环境中使用 Dapr

    在Dapr 文档和实践案例中多是推荐采用k8s, 其实我目前也是在k8s 上操作的,有公有云TKE,AKS,还有私有云的Rancher ,它并没有传闻中的那么难,而且我认为它非常容易上手.不过,我还是 ...

  6. Linux密码操作

    CentOS7 利用Python程序生成sha512加密密码: [root@localhost ~]# python -c 'import crypt,getpass;pw="zxcvbnm ...

  7. MySQL从卸载到安装!图文详细版(你想知道的全都有!!)

    2. MySQL的下载.安装.配置 2.1 MySQL的四大版本 MySQL Community Server社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户. MySQL E ...

  8. web自动化之selenium(四)元素等待

    隐式等待 说明 隐式等待是通过设置一定时长的等待,让页面上的某些元素能过加载出来,如果超过了设置的时间还没有加载出来则抛出(NoSuchelementException异常),默认单位为"秒 ...

  9. AT2300题解

    两种做法都说一说吧... 题意很明确. 1.数论分块 对于一个 \(d\) 和给定的 \((l,r)\),\((l,r)\) 对其造成贡献的条件很明显是 \(\lfloor \frac {l-1} d ...

  10. Ansible 使用配置

    1.配置 /etc/ansible/hosts 文件,添加被管控主机ip #vim /etc/ansible/hosts   文件末尾添加组[group1]和被管控主机的IP [group1] 192 ...