刷题day8_cin>>v; mp[v]++;-程序员宅基地

技术标签: 算法  深度优先  c++  

带分数

这题也不是很难,首先就是全排列 ,于是想到了dfs,在此基础上,再对这些数列进行划分,找到满足条件的情况即可。

#include<bits/stdc++.h>
using namespace std;
bool vis[10];
vector<vector<int> >v;
vector<int> temp;
void dfs(int depth)
{
	if(depth == 10)
		v.push_back(temp);
	for(int i = 1;i<=9;i++)
	{
		if(vis[i]==0)//未走过 
		{
			vis[i] = 1;
			temp.push_back(i);
			dfs(depth+1);
			temp.pop_back();
			vis[i] = 0;
		}
	}
 }
int tonum(int j,int start,int end)
{
	int sum = 0;
	for(int i =start;i<=end;i++)
	{
		sum = sum*10+v[j][i];
	}
	return sum;
}
int main()
{
	int n;
	cin>>n;
	dfs(1);
	int ans = 0;
	for(int i =0;i<v.size();i++)
	{
		//第一个整数cv 
		for(int j =0;j<7;j++) //都是从下标开始
		{
			int a1 = tonum(i,0,j);
			if(tonum(i,0,j)>n)
				break;//不再扩增
			for(int k = j+1;k<=7;k++)
			{
				int a2 = tonum(i,j+1,k);
				int a3 = tonum(i,k+1,8);//把这个分成三段
				if(a2 < a3||a2%a3!=0)
				{
					continue;
				 } 
				 if((n - a1) == (a2/a3))
				    ans++;
			}
		 } 
	 }
	 cout<<ans<<endl;
	return 0;
 } 

幸运数

思维题,主要是了解到每一步中其数字 是如何更新的,另外这个里面只需要求出一部分区间即可。

#include<bits/stdc++.h>
using namespace std;
bool v[1000001];
int m,n,sum = 0;
void zhiyi()
{
	for(int i =2;i<=n;i++)//从下标开始记录  这以后都是 
	{
		if(v[i] == 0)//当前未置1
		{
			for(int j =1,sum =0;j<=n;j++)
			{
				if(v[j] == 0)
					sum++;
				if(sum == i)
				{
					sum = 0;
					v[j] = 1;
				}
			}
		 } 
	}
}
int main()
{
	cin>>m>>n;
	memset(v,0,sizeof(v));
	int ans = 0;
	zhiyi();
	for(int i = m+1;i<n;i++)
	{
		if(v[i] == 0)
			ans++;
	}
	cout<<ans<<endl;
	return 0;
}

清点代码库

这个题目主要就是要学会使用set  和  map和pair

#include <bits/stdc++.h>
using namespace std;
set<vector<int> > s;
map<vector<int>, int> mp; //标记里面的重复的个数
int n, m;
//下面就是排序  排序的部分就交给set里面的函数来处理  至于处理的对象 就可以在函数里面定义
struct cmp
{
	bool operator()(const pair<vector<int>, int> &a, const pair<vector<int>, int> &b)
	//如果对set内部进行排序,则可以选择这样的一种写法
	{
		if (a.second != b.second)
		{
			return a.second > b.second;
		}
		else
			return a.first < b.first;
	}
};
set<pair<vector<int>, int>, cmp> List; //这样  这个list就遵循这样的排序顺序
int main()
{
	cin >> n >> m;
	for (int i = 0; i < n; i++)
	{
		vector<int> v;
		for (int j = 0; j < m; j++)
		{
			int temp;
			cin >> temp;
			v.push_back(temp);
		}
		s.insert(v);
		mp[v]++;
	}
	cout << s.size() << endl;
	for (auto it = s.begin(); it != s.end(); it++)
	{
		List.insert({*it, mp[*it]});
	}
	for (auto it = List.begin(); it != List.end(); it++)
	{
		cout << (*it).second;
		for (int i = 0; i < (*it).first.size(); i++)
		{
			cout << " " << (*it).first[i];
		}
		cout << endl;
	}
	return 0;
}

等几种STL结构的方法,这几种数据结构在这个里面都有所体现,只一个值得看的题目,另外,这个里面用set进行排序的时候,注意一下函数该怎么写。

还原文件 这是两个比较复杂的模拟题 当做是练手

#include<bits/stdc++.h>
using namespace std;
string s;
string a[101];
int last[101];
bool vis[101];
vector<int> v;
int main() 
{
	int n;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		string temp;
		cin>>temp;
		s+=temp;
	}
	//cout<<s<<endl; 
	cin>>n;
	for(int i =0;i<n;i++)
	{
		int j;
		cin>>j; 
		for(int k = 0;k<j;k++)
		{
			string temp;
			cin>>temp;
			if(k == j-1)
			{
				last[i] = temp.size();
			}
			a[i]+=temp;
		}
	}
	//cout<<a[0]<<endl;
	int j;
	while(s.size() != 0)
	{
		for(j = 0;j<n;j++)
		{
			if(vis[j] == 0&&a[j] == s.substr(0,a[j].size()))
			{
				//cout<<a[j]<<endl;
				s.erase(s.begin(),s.begin()+a[j].size()-last[j]);
				//cout<<s<<endl;
				vis[j] = 1;
				v.push_back(j+1);
				break;
			}
		}
		//cout<<s<<endl;
		if(s.size() == last[j])
		break;
	}
	for(int i =0;i<v.size()-1;i++)
		cout<<v[i]<<" ";
    cout<<v[v.size()-1];
	return 0; 
}

 哲哲打游戏

#include<bits/stdc++.h>
using namespace std;
vector<vector<int> >vv;//记录每一次的操作
vector<int> v[101];//表示每一个存档

vector<int> ab;//表示当前所进行的操作 
int N,M; 
int main()
{
	cin>>N>>M;
	for(int i = 1;i<=N;i++)
	{
		int n;
		cin>>n;
		vector<int> temp;
		for(int j = 0;j<n;j++)
		{
			int k;
			cin>>k;
			temp.push_back(k);
		}
		vv.push_back(temp);//依次进行每一个存档 
	}
	//下面开始进行每一步的操作
	int now = 1;
	ab.push_back(1);//表示去过第一次了 
	for(int i =0;i<M;i++)
	{
		int step;
		cin>>step;
		if(step == 0)
		{
			int pro;
			cin>>pro;
			now = vv[now-1][pro-1];//表示的是当前是第几个 
			ab.push_back(now); 
		}
		else if(step == 1)
		{
			int pro;
			cin>>pro;
			v[pro] = ab;//表示把当前这个进行一个存档 
			cout<<now<<endl;
		}
		else
		{
			int pro;
			cin>>pro;
			ab = v[pro];
			now = ab[ab.size()-1];
		}
	 } 
	 cout<<now;
	return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_54344261/article/details/123564479

智能推荐

rook-ceph15.2完全卸载_rook-ceph 卸载-程序员宅基地

文章浏览阅读1.9k次。rook-ceph O版结合k8s部署,部署失败后,一定要彻底清理,否则磁盘osd识别不到硬盘。1.首先先删除k8s上rook-ceph下的所有资源,按照部署的顺序反着操作。kubectl delete -f cluster.yamlkubectl delete -f operator.yamlkubectl delete -f common.yamlkubectl delete -f crds.yaml(其实后面的common和crds可以不删,为了稳妥一点还是删了吧)删资源的过程中,可._rook-ceph 卸载

电路交换时代的终结:2G终于要退出历史舞台_2g电路交换-程序员宅基地

文章浏览阅读990次。从1G到4G,每一代移动通信技术的频谱效率都会向前迈进一大步。逐步清退2G,让位给新技术,运营商不仅可重耕2G优质频段,还能大幅节省弥足珍贵的频谱资源——如果传统2/3G CS语音退役并迁移至4G VoLTE,运营商可释放达90%的频谱资源。为此,全球多家运营商已陆续关闭2G网络。然而,展望5G,从CS语音到VoLTE再到5G VoNR,这背后却让我们看到了一个更加辉煌的时代——电路交换时代逐渐退出历史舞台。最早的电话网络叫电路交换(circuit switching..._2g电路交换

荣耀手机升级鸿蒙名单,荣耀手机不能升级鸿蒙了?博主给出升级名单-程序员宅基地

文章浏览阅读53次。5 月 8 日消息,网上有消息称,荣耀手机可能无缘鸿蒙 OS,部分荣耀手机用户表示担心。对此,微博博主 @菊厂影业 Fans 表示,荣耀用户不要听信谣言。该博主还公开了部分有升级计划的荣耀机型。该博主表示,荣耀 V40 之前的设备可以升级鸿蒙系统,包括荣耀 30 系列,V30 系列,麒麟 810、820 芯片产品也都有升级计划。中关村在线了解到,此前有荣耀 9X 用户参与了鸿蒙 OS 内测,荣耀 ..._鸿蒙系统升级名单荣耀不能升级?

OpenLayers 3 之 使用地理数据传输格式GeoJSON_openlayers geojson是什么格式-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏13次。用户请求地理数据或者其他数据,服务器要以一定的客户端能够识别的数据格式返回,数据格式是否高效,直接影响用户的体验!首先要求数据格式要是轻量级的,还要求客户端处理数据方便快捷,相较于XML,JSON满足这两个要求,且目前应用广泛,非常流行。而在传输地理信息方面,相应有GeoJSON。下面咱就来了解一下GeoJSON,并看看它怎么应用到应用里!_openlayers geojson是什么格式

vue-cli目录详解_vue cli 所在目录-程序员宅基地

文章浏览阅读1.7k次,点赞5次,收藏14次。vue-cli脚手架目录一览最近在学习vue,看的稀里糊涂。今天从头开始,把cli配置的vue项目目录和配置文件搞清楚。先看看整个项目目录结构:再看看build文件夹下相关文件及目录:config文件夹下目录和文件:接下来说说vue-cli项目中页面相关的主要文件o首先是index.html:说明:一般只定义一个空的根节点,在main.js里面定义的实例将挂载在#app节点下,..._vue cli 所在目录

你是这样的 CSS,19个唯美的边框_css好看的边框样式-程序员宅基地

文章浏览阅读2w次,点赞67次,收藏468次。作者:niemvuilaptrin译者:前端小智来源:medium有梦想,有干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。今天,分享一波唯美的边框,可增加我们的项目"亮"点,让用户爱起来。渐变边框动画事例地址:https://codepen.io/mike-schultz/pen/NgQvGOCSS Animati._css好看的边框样式

随便推点

android权限赋予流程_adb 给app授权-程序员宅基地

文章浏览阅读3k次。android 权限 permission_adb 给app授权

linux支持大磁盘配置_size of device too big to be-程序员宅基地

文章浏览阅读1.5k次。问题:mkfs.ext3: Size of device /dev/sdc1 too big to be expressed in 32 bits using a blocksize of 4096.CentOS 6.3 x64 支持大于2T,小于16T的数据盘 1.支持2T2.支持x>16T磁盘分区,需要安装插件;e2fsprogs-1.43.4.tar.gz(CentOS 6._size of device too big to be

JS接收url上的参数_servlet如何接收js的url参数-程序员宅基地

文章浏览阅读220次。用正则表达式:function GetQueryString(name) { var reg = new RegExp(“(^|&)”+ name +”=([^&]*)(&|$)”); var r = window.location.search.substr(1).match(reg); if(r!=null)return unescape(r[2]); r_servlet如何接收js的url参数

实战在两台服务器部署项目_autojob两台服务器怎么部署-程序员宅基地

文章浏览阅读3.9k次。目前有的服务器配置两台装了win10的同等配置的虚拟机,两个服务器在一个局域网内 。暂且称为服务器A,服务器B。服务器A安装tomcat,部署应用。服务器B安装mysql和redis数据库。安装服务器环境服务器A安装jdk1.8环境打开环境变量配置。计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。配置JAVA_HOME。新建,变量名JAVA_HOME,变量值,..._autojob两台服务器怎么部署

11 亿条数据压缩到 12GB,TDengine 在陕煤矿山项目的落地实践_tdengine单表支持最大容量-程序员宅基地

文章浏览阅读3.6k次。从写入性能到查询性能均大幅满足现场实际需求,整体压缩率可以达到3/100。_tdengine单表支持最大容量

惠普gen8服务器参数文档,HP Gen8 服务器安装2008 R2 帮助手册-程序员宅基地

文章浏览阅读1k次。从引导安装HP最新一代的Gen8服务器已经将引导集成在机器里面了,不再需要单独的引导盘,也避免了以前由于引导盘丢失所造成的各种不便F9:Setup进入BIOSF10:IntelligentProvisioning进入引导F11:启动选项此处按F10进入引导创建磁盘阵列(Raid)以及安装操作系统进入引导后会有短暂的初始窗口,稍等片刻初始完成,此处可以选择界面语言、键盘类型、时间等一些设置设..._hp 388 gen8服务器raid配置

推荐文章

热门文章

相关标签