精华内容
下载资源
问答
  • 支撑数c语言
    千次阅读
    2021-05-30 12:12:15

    **

    链接:

    **http://1.14.136.201/problem.php?cid=1058&pid=1

    代码:

    #include<iostream>
    using namespace std;
    main()
    {
    	int m,a[100],count=0;
    	
    	cin>>m;
    	
    	for(int i=0;i<m;i++)
    	{
    		cin>>a[i];
    	}
    	for(int k=1;k<m-1;k++)
    	{
            if(a[k]>a[k-1]&&a[k]>a[k+1])
    		{
    	    cout<<a[k]<<' ';
    		count++;
    		
    		if(count==5)
    		{count=0;
    		 cout<<endl;
    	    }
    	    }
        }
    }
    
    更多相关内容
  • 常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持。网上也有很多中文内码的转换工具,什么专家,...

    常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持。网上也有很多中文内码的转换工具,什么专家,大师,巨匠之类所有光辉灿烂的名字都被使用了,但是在自己的程序中集成这些功能岂不是更好。以前曾广泛流传过使用码表来转换中文内码的Code,但毕竟不完美,而且还要携带或内置一个巨大的表,浪费资源。Windows中提供了MultiByteToWideChar和WideCharToMultiByte两兄弟函数,足可以搞定这些功能了。

    以下四个函数分别实现:

    大五码转GBK码/GBK转大五码

    GB2312码转GBK码/GBK码转GB2312码

    于是有人要问了,为什么没有GB2312转BIG5和BIG5转GB2312呢,我们有GBK,可以做一下中转啊。可以将GB2312转成GBK,再将GBK转成BIG5,反之亦然。如果你嫌麻烦,可以自己写一个GB2BIG5/BIG52GB。

    //---------------------------------------------------------------------------

    // 大五码转GBK码:

    // い地チ㎝瓣 --> 中華人民共和國

    void __fastcall BIG52GBK(char *szBuf)

    {

    if(!strcmp(szBuf, ""))

    return;

    int nStrLen = strlen(szBuf);

    wchar_t *pws = new wchar_t[nStrLen + 1];

    try

    {

    int nReturn = MultiByteToWideChar(950, 0, szBuf, nStrLen, pws, nStrLen + 1);

    BOOL bValue = false;

    nReturn = WideCharToMultiByte(936, 0, pws, nReturn, szBuf, nStrLen + 1, "?", &bValue);

    szBuf[nReturn] = 0;

    }

    __finally

    {

    delete[] pws;

    }

    }

    //---------------------------------------------------------------------------

    // GBK转大五码

    // 中華人民共和國 --> い地チ㎝瓣

    void __fastcall GBK2BIG5(char *szBuf)

    {

    if(!strcmp(szBuf, ""))

    return ;

    int nStrLen = strlen(szBuf);

    wchar_t *pws = new wchar_t[nStrLen + 1];

    try

    {

    MultiByteToWideChar(936, 0, szBuf, nStrLen, pws, nStrLen + 1);

    BOOL bValue = false;

    WideCharToMultiByte(950, 0, pws, nStrLen, szBuf, nStrLen + 1, "?", &bValue);

    szBuf[nStrLen] = 0;

    }

    __finally

    {

    delete[] pws;

    }

    }

    //----------------------------------------------------------------------------

    // GB2312码转GBK码

    // 中华人民共和国 --> 中華人民共和國

    void __fastcall GB2GBK(char *szBuf)

    {

    if(!strcmp(szBuf, ""))

    return;

    int nStrLen = strlen(szBuf);

    WORD wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC);

    int nReturn = LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nStrLen, NULL, 0);

    if(!nReturn)

    return;

    char *pcBuf = new char[nReturn + 1];

    try

    {

    wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC);

    LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nReturn, pcBuf, nReturn + 1);

    strncpy(szBuf, pcBuf, nReturn);

    }

    __finally

    {

    delete[] pcBuf;

    }

    }

    //---------------------------------------------------------------------------

    // GBK码转GB2312码

    // 中華人民共和國 --> 中华人民共和国

    void __fastcall GBK2GB(char *szBuf)

    {

    if(!strcmp(szBuf, ""))

    return;

    int nStrLen = strlen(szBuf);

    WORD wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5);

    int nReturn = LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nStrLen, NULL, 0);

    if(!nReturn)

    return;

    char *pcBuf = new char[nReturn + 1];

    try

    {

    wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5);

    LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nReturn, pcBuf, nReturn + 1);

    strncpy(szBuf, pcBuf, nReturn);

    }

    __finally

    {

    delete []pcBuf;

    }

    }

    //---------------------------------------------------------------------------

    // 测试代码

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

    char szBuf[255];

    // 从GB2312转到GBK

    strcpy(szBuf, Edit1->Text.c_str());

    GB2GBK(szBuf);

    Edit2->Text = String(szBuf);

    // 从GB2312转到BIG5,通过GBK中转

    strcpy(szBuf, Edit1->Text.c_str());

    GB2GBK(szBuf);

    GBK2BIG5(szBuf);

    Edit3->Text = String(szBuf);

    }

    注意,请不要使用String类的c_str()作为上述几个函数的传入参数。

    展开全文
  • c++p1499:支撑数

    2021-06-25 08:25:27
    而这类就叫做“支撑数”。你能在数列找到它们吗? 输入: 第一行包含一个正整数n,表示第二行有多少个正整数。第二行有n个正整数,且两两之间用一个空格隔开。(n ) 输出: 包含若干个“支撑数”。每个支撑数占一行...
  • 在贪婪算法这一章提到了最小生成树的一些算法,首先是Kruskal算法,实现如下: MST.h 代码如下:#ifndef H_MST#define H_MST #define NODE node *#define G graph *#define MST edge ** /* the undirect graph start...
  • //记录选取的边 int flag[pg->vexnum]; for(i=0;i<pg->vexnum;i++) flag[i] = i; for(i=0;i<pg->arcnum&&cnt<pg->vexnum-1;i++){//O(|V|) int src1 = find_src(flag,path[i].ibeg); int src2 = find_...

    Prim算法

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。
    假设V是图中顶点的集合,E是图中边的集合,TE为最小生成树中的边的集合,则prim算法通过以下步骤可以得到最小生成树:

    1:初始化:U={u 0},TE={f}。此步骤设立一个只有结点u 0的结点集U和一个空的边集TE作为最小生成树的初始形态,在随后的算法执行中,这个形态会不断的发生变化,直到得到最小生成树为止。

    2:在所有u∈U,v∈V-U的边(u,v)∈E中,找一条权最小的边(u 0,v 0),将此边加进集合TE中,并将此边的非U中顶点加入U中。此步骤的功能是在边集E中找一条边,要求这条边满足以下条件:首先边的两个顶点要分别在顶点集合U和V-U中,其次边的权要最小。找到这条边以后,把这条边放到边集TE中,并把这条边上不在U中的那个顶点加入到U中。这一步骤在算法中应执行多次,每执行一次,集合TE和U都将发生变化,分别增加一条边和一个顶点,因此,TE和U是两个动态的集合,这一点在理解算法时要密切注意。

    3:如果U=V,则算法结束;否则重复步骤2。可以把本步骤看成循环终止条件。我们可以算出当U=V时,步骤2共执行了n-1次(设n为图中顶点的数目),TE中也增加了n-1条边,这n-1条边就是需要求出的最小生成树的边。

    在这里插入图片描述

    n个顶点 n-1 条边    n-1条边的路径之和最短
    n-1条边要把所有的顶点连接在一起
    n-1条边的权重相加最小,则称为最小生成树
    prim   普里姆   普拉姆   稠密图
       每次从未加入到生成树的集合中选择一条到生成树中
    	(任意一个顶点都行)最短路径的边所接连的顶点
       加入到生成树中
       重复n-1次
    
    //普里姆最小生树算法 
    #define MAX_INT (~(1<<31))
    void prim(ALGraph *pg){//O(|V|*|V|+|E|)) 
    	int dist[pg->vexnum]; //保存未加入到生成树的所有顶点到达生成树中的距离
    	int begv[pg->vexnum]; //begv[i]记录到顶点i的最短距离的边的开始顶点 
    	//dist[i] 表示 到顶点i的距离  dist[i]==0 表示i顶点已经在生成树中了
    	int i,j;
    	for(i=0;i<pg->vexnum;i++){
    		dist[i] = MAX_INT; //最大值   表示一开始到生成树的距离无穷大 
    		begv[i] = -1; 
    	}
    	int curr = 0; 
    	for(i=0;i<pg->vexnum-1;i++){//循环pg->vexnum-1次   
    		dist[curr] = 0;//curr顶点加入到生成树中
    		ArcNode *node = pg->vexs[curr].firstarc;
    		//更新未加入到生成树中的所有顶点到生成树中顶点的距离  
    		for(;node!=NULL;node=node->next){
    			//node->adjvex不在生成树中  它到生成树的距离比之前小 
    			if(dist[node->adjvex]!=0 && node->weight < dist[node->adjvex]){
    				dist[node->adjvex] = node->weight;
    				begv[node->adjvex] = curr;//该距离是从curr到node->adjvex顶点 
    			}
    		}
    		int min = 0;
    		for(j=1;j<pg->vexnum;j++){//选取一条到生成树中最小的边 
    			if((dist[j]!=0&&dist[j]<dist[min])||dist[min]==0){
    				min = j;
    			}
    		} 
    		printf("%c -[%d]-> %c\n",pg->vexs[begv[min]].data,dist[min],pg->vexs[min].data);
    		curr = min;
    	} 
    }
    

    Kruskal算法

    求加权连通图的最小生成树的算法。kruskal算法总共选择n- 1条边,(共n个点)所使用的贪心准则是:从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中。注意到所选取的边若产生环路则不可能形成一棵生成树。kruskal算法分e 步,其中e 是网络中边的数目。按耗费递增的顺序来考虑这e 条边,每次考虑一条边。当考虑某条边时,若将其加入到已选边的集合中会出现环路,则将其抛弃,否则,将它选入。
    假设V是图中顶点的集合,E是图中边的集合,TE为最小生成树中的边的集合,则prim算法通过以下步骤可以得到最小生成树:

    1:初始化:U={u 0},TE={f}。此步骤设立一个只有结点u 0的结点集U和一个空的边集TE作为最小生成树的初始形态,在随后的算法执行中,这个形态会不断的发生变化,直到得到最小生成树为止。

    2:在所有u∈U,v∈V-U的边(u,v)∈E中,找一条权最小的边(u 0,v 0),将此边加进集合TE中,并将此边的非U中顶点加入U中。此步骤的功能是在边集E中找一条边,要求这条边满足以下条件:首先边的两个顶点要分别在顶点集合U和V-U中,其次边的权要最小。找到这条边以后,把这条边放到边集TE中,并把这条边上不在U中的那个顶点加入到U中。这一步骤在算法中应执行多次,每执行一次,集合TE和U都将发生变化,分别增加一条边和一个顶点,因此,TE和U是两个动态的集合,这一点在理解算法时要密切注意。

    3:如果U=V,则算法结束;否则重复步骤2。可以把本步骤看成循环终止条件。我们可以算出当U=V时,步骤2共执行了n-1次(设n为图中顶点的数目),TE中也增加了n-1条边,这n-1条边就是需要求出的最小生成树的边。

    在这里插入图片描述kruskal 克鲁斯卡尔 稀疏图
    对所有的边进行排序 (从小到大)
    从边权重最小的开始选择,试着加入到生成树,
    ***如果和之前的顶点能够成回路则舍弃
    如果没有构成回路则该条边是合适的
    总共选择n-1条边

    int comp_path(const void *v1,const void *v2){
    	const Path *pa = (const Path*)v1;
    	const Path *pb = (const Path*)v2;
    	return pa->weight - pb->weight;
    }
    
    //与curr顶点相连的最开始的顶点 
    static int find_src(int flag[],int curr){
    	while(flag[curr]!=curr){
    		curr = flag[curr];
    	} 
    	return curr;
    }
    void kruskal(ALGraph *pg){//O(|V|+|E|log|E|)
    	Path path[pg->arcnum];
    	int j = 0;
    	int i;
    	for(i=0;i<pg->vexnum;i++){//O(|E|+|V|) 
    		ArcNode *node = pg->vexs[i].firstarc;
    		for(;node!=NULL;node = node->next){
    			//i  node->adjvex  node->weight
    			if(i>node->adjvex && (pg->kind==UDG||pg->kind==UDN)){
    				continue;
    			}
    			path[j].ibeg = i;
    			path[j].iend = node->adjvex;
    			path[j].weight = node->weight;
    			++j;
    		}
    	} 
    	qsort(path,pg->arcnum,sizeof(Path),comp_path);//O(|E|log|E|)
    	int cnt = 0;//记录选取的边数 
    	int flag[pg->vexnum];
    	for(i=0;i<pg->vexnum;i++)
    		flag[i] = i;
    	
    	for(i=0;i<pg->arcnum&&cnt<pg->vexnum-1;i++){//O(|V|)
    		int src1 = find_src(flag,path[i].ibeg);
    		int src2 = find_src(flag,path[i].iend);
    		if(src1!=src2){//说明ibeg,iend 连接的边 选取之后 不会构成回路 
    			printf("%c -[%d]-> %c\n",pg->vexs[path[i].ibeg].data,path[i].weight,
    				pg->vexs[path[i].iend].data);
    			cnt++;
    			flag[src1] = src2;
    		}
    	}
    }
    
    
    展开全文
  • 【HUSTOJ】1088: 查找“支撑数

    千次阅读 2016-05-07 08:49:13
    1088: 查找“支撑数” Time Limit: 1 Sec Memory Limit: 128 MB Submit: 49 Solved: 18 原题链接 Description 在已知一组整数中,有这样一种非常怪,它们不在第一个,也不在最后...

    1088: 查找“支撑数”

    Time Limit: 1 Sec   Memory Limit: 128 MB

    Submit: 49   Solved: 18

    原题链接

    Description

    在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?

    Input

    第一行为整数m,表示输入的整数个数。( 3<= m <=100 ) 第二行为m个整数。

    Output

    若干个支撑数,每行五个,每个数后面一个空格。

    Sample Input

    30
    5 89 32 31 45 44 12 35 21 34 21 89 43 21 35 22 15 17 1 23 37 21 35 34 21 36 22 45 78 89
    

    Sample Output

    89 45 35 34 89 
    35 17 37 35 36 
    

    HINT

    Source



    #include<iostream>
    using namespace std;
    main()
    {
    	int m,a[100],count=0;
    	
    	cin>>m;
    	
    	for(int i=0;i<m;i++)
    	{
    		cin>>a[i];
    	}
    	for(int k=1;k<m-1;k++)
    	{
            if(a[k]>a[k-1]&&a[k]>a[k+1])
    		{
    	    cout<<a[k]<<' ';
    		count++;
    		
    		if(count==5)
    		{count=0;
    		 cout<<endl;
    	    }
    	    }
        }
    }


    展开全文
  • 浅析面向学生自主学习的C语言程序设计实践教学支撑环境.pdf
  • 7-5 最小支撑树 (10分)

    2021-01-28 15:53:02
    每组数据第一行为2个整数n和e,均不超过200,分别表示图的顶点和边。接下来e行表示每条边的信息,每行为3个非负整数a、b、c,其中a和b表示该边的端点编号,c表示权值。各边并非按端点编号顺序排列。 输出格式: ...
  • 时至今日,物联网等应用的兴起,给嵌入式软件开发带来新的挑战,而传统的面向过程开发已经难以支撑这些复杂的应用。因此,有必要在嵌入式软件开发中引入面向对象、设计模式等优秀的软件开发方法。面向对象是现代软件...
  • 什么是c语言

    2021-05-22 04:19:51
    手机评站网今天精心准备的是《什么是c语言》,下面是详解!什么是C语言和C+语言1、C语言C语言诞生得非常早,当时...C语言的源代码基本上可以非常容易地对应到汇编代码,并且可以不需要什么运行时环境的支撑。C的...
  • 昨天有个读者问我要 C语言的学习路线,他今年刚上大一,书上的代码完全看不懂。 讲真,大一新生,一般都是零基础的纯小白,看不懂书上的代码很正常,除非是小学、初中、高中就开始卷计算机的硬核少年;或者是因为...
  • 【内容简介】本书是国家精品课程教材,以教育部计算机科学与...全书采用C语言作为描述语言,内容丰富,叙述简明,理论与实践并重,每章设有应用举例和算法实验题,并为任课教师免费提供电子课件和课程实验用数据。...
  • 2) 多数高校都开设了C语言课程,网上C语言课程也很多,但普遍存在两个问题: (1) 授课方式单一,大多是照着代码念一遍, 对刚刚接触编程的同学来说,感觉晦涩难懂 (2) 授课内容过度注重语法,没有项目实战支撑,造成...
  • 混合教学模式中实践操作类课程的支撑机制研究——以《C语言程序设计》课程为例.pdf
  • C语言思维导图.docx

    2019-11-14 13:03:40
    C语言是最基本的编程语言,有中级语言支撑,是编程入门必须要掌握的,我在自己的学习中做了这个思维导图并记了很多编程语法中的易错点
  • 贪吃蛇(C语言实现)

    万次阅读 多人点赞 2021-08-17 20:47:21
    游戏代码 博友们可以将以下代码复制到自己的编译器当中运行: #include #include #include #include #include #define ROW 22 //游戏区行数 #define COL 42 //游戏区列 #define KONG 0 //标记空(什么也没有) #...
  • 最小生成树(C语言

    千次阅读 2021-12-01 15:40:06
    最小生成树问题(C语言) 所谓一个 带权图 的最小生成树,就是原图中边的权值最小的生成树 ,所谓最小是指边的权值之和小于或者等于其它生成树的边的权值之和。 kruskal 克鲁斯卡尔算法(Kruskal)是一种使用贪婪...
  • 关键字 32个关键字: C和C++的关系 C++ 主要在C语言的基础上增加了面向对象和泛型的机制,提高了开发效率,以适用于大中型软件的编写。... 开发系统组件或服务,用于支撑上层应用; 编写PHP扩展,增强PHP的功能;
  • 关于C语言的毕业论文题目100个.docx
  • 对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来。但是学了C语言的基本语法后,发现只能开发“黑底白字”的DOS程序,完全没有漂亮的界面和生动的交互。于是学数据结构,学算法,学...
  • C语言公共基础知识.zip
  • 主要介绍了C语言结构体(struct)常见使用方法(细节问题),需要的朋友可以参考下
  • 时至今日,物联网等应用的兴起,给嵌入式软件开发带来新的挑战,而传统的面向过程开发已经难以支撑这些复杂的应用。因此,有必要在嵌入式软件开发中引入面向对象、设计模式等优秀的软件开发方法。面向对象是现代软件...
  • 甚至可以毫不夸张的讲:如今庞大的计算机互联网行业,基本全靠C语言支撑,在已知领域,还没有发现C语言做不到的事情! 如果你已学过C语言,缺仍感觉云里雾里不知其所以然.如果你想真正成为一名懂底层、懂C语言的...
  • 第一节 C语言编程中的几个基本概念 1.1 #include与#include" " 1. #include和#include" "有什么区别? 这个题目考查大家的基础能力,#include用来包含开发环境提供的库, #include" "用来包含.c/.cpp文件...
  • 包含C语言常用的经典算法
  • 学习C语言的基本思路

    2020-08-04 15:59:44
    计算机行业发展非常快,大学里的教育基本都跟不上实际的社会需求。如果你所在的学校还在指定大家使用谭浩强的教材,或使用VC6.0来教大家上机实验,那你不妨看看本文,这里有一些建议可以帮助你不会脱离社会太远。
  • C语言算法大全

    2018-05-13 22:36:12
    纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64 个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根 石棒,且搬运过程中遵守大盘子在小...
  • 学习笔记,C语言、python

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,846
精华内容 5,538
关键字:

支撑数c语言