小白要努力之为了蓝桥杯刷题!!!超简单哦!!!

分享一个歌词直接让我笑喷的歌词----之前我不听歌的,毕竟第一次听到。学习的目的就是找工作,或者创业,但就是一个字“挣钱”
嘿嘿
下面直接开始正题吧
首先科普一些知识,全局变量定义的时候默认值为0 所以我在有些时候使用计数器时没有赋初值。毕竟准备参加蓝桥杯嘛,蓝桥杯有时间限制的,所以少码一个字母也可以节约时间 嘿嘿!!!还有一点,小编在写博客的时候尽量把博客写到最好,用最通俗的语言表达出我想表达的,希望大家看到之后能给小编提出建议,那些地方错了希望能告诉小编!小编再去修正。一起努力!!!!!!!


今天分享的已经不是最简单了哦。比昨天更有意思点。嘿嘿 有些题可以用多种方法,小编在这里都告诉你们!!

试题:统计字母频率

**【题目要求】输入一个字符串,统计26个字母出现的频率并输出 输入的数是小写 **
二话不说直接上代码:

#include<bits/stdc++.h>
using namespace std;
string s;
int p;
int vis[200];
int main(){
    
    
	cin>>s;
	for(int i=0;i<s.length();i++){
    
    
		p=s[i]-'a';
		vis[p]++;
	}
	for(int i=0;i<26;i++){
    
    
		cout<<vis[i]<<" ";
	}
	return 0;
}
 

这道题比较简单.就是直接循环来判断这个字母是多少,将字母转换成数字,在对应的下标 自加一 ;这样输出的最终就能是我们想要的结果了!
【临时小科普】——论(数组名).length()与.size()的区别

  1. length属性:用于获取数组长度。
  2. length()方法:用于获取字符串长度。
  3. size()方法:用于获取泛型集合有多少个元素。

试题:门牌制作

【向题描述】小蓝要为一条街的住户制怍门牌号。
这条街一共有2020位住户,门牌号从1到2020编号。小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7.请问要制作所有的1到2020号门牌,总共需要多少个字符2?

上代码咯---->

#include<bits/stdc++.h>
using namespace std;
int ans;
int f(int n){
    
    
	int t;
	while(n>0){
    
    
		t=n%10;
		n/=10;
		if(t==2) ans++;
	}
}
int main(){
    
    
	for(int i=1;i<=2020;i++){
    
    
		f(i);
	}
	cout<<ans;
	
}

这个题的主要思路就是 将需要数字的每一位都分离出来 如果有一个带2的就让计数器加一;最终得出自己想要的结果。
这些可都是蓝桥杯原题哦。这些可就太简单了,我相信大家肯定没有被难到的。下面就要开始加大难度咯!!!.

试题:年号字串

*问题描述】小明用字母A对应数字1,B对应2,以此类推,用Z对应28。对于27以上的数字,小明用两位或更长位的字符串来对应,例如MA对应27,AB对应28,AZ对应52,LQ对应329 请问2019对应的字符串是什么?

方法一 用进制转换思想

#include<bits/stdc++.h>
using namespace std;
void f(int n){
    
    
	int num=0;
	int arr[100];
	while(n>0){
    
    
		arr[num++]=n%26;
		n/=26;
	}
	for(int i=num-1;i>=0;i--)
	{
    
    
		cout<<arr[i]<<" ";
	}
}
int main()
{
    
    
	f(2019);
	return 0;
}

这个题其实还可以,就是将一个数转换成26进制,然后再转换成字母,求出结果, 但是,这个是个填空题呀。

方法二 用Excel表格

咱们可以直接用Excel表格呀你们看效果
黑河
小编Excel并不是很会用 但拖动也就不到一分钟,可比写代码香多了。当然有能力的小伙伴可以直接拿笔用数学方法算

蛇形填数

怎么样

方法一 代码法

这个题就有些难度了。我还是选择先写代码再解释我的代码思想吧!!

#include<bits/stdc++.h>
using namespace std;
int a[1000][1000];
int x=1,y=1,k=1,cnt=1; //x代表行 k代表列   k代表需要填的行 
int main(){
    
    
	a[x][y]=cnt++;
	
	while(a[20][20]==0){
    
    
    	a[x][++y]=cnt++;
    	
	for(int i=k;i>=1;i--)
	  a[++x][--y]=cnt++;
	k++;
	
	a[++x][y]=cnt++;
	for(int i=k;i>=1;i--)
	   a[--x][++y]=cnt++;
	 k++;
	}
	cout<<a[20][20];
	return 0;
}

规则:右1位 y+1 下斜方向填 x+1 y-1 下1行 x+1 上斜方向填数 x-1 y+1
其实总的思想就是他是s型嘛,两个一轮回。所以一次循环直接输出一个拐弯 。这样就能达到我们的目的了。
其实这个题写出来不难,但如果想的话,可能嘚花点时间去想。毕竟没有思路嘛一开始
。毕竟才10分,我们直接看方法二吧

方法二 数学思想

看这个
介绍也在图里,了,下面我用我自己的草纸写出来吧 因为他是让我们求20行20列 所以只需要看最中间的数即可。
字好丑
字好丑。。。。哈哈哈,凑合看看嗷!!
其实就是一个简单的等差数列,可还能接受?不能接受 就只能打回高一再学一遍了!!哦 !是高二学的,。

好了 今天的分享就到这里了,了解这些算法的思想,努努力,争取学好编程。数学和编程是分不开的。所以大家努努力 了解了解嗷!!!!!!!!!!

关于小编

我知识一名普通职业本科的一名小白。先在说出我学校的名,别人都怀疑我是专科生,哎、或许以后面试工作也会这样吧,所以努努力争取大学拿一个四级证,参加点比赛,拿点奖项!!

小编QQ:2206730228 大家可以加我好友 然后一起学习哒

猜你喜欢

转载自blog.csdn.net/qq_53711262/article/details/115439170