本文主要是介绍算法题(320-快手模拟),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。
由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊。
已知深渊有N层台阶构成(1 <= N <= 1000),并且每次月神仅可往上爬2的整数次幂个台阶(1、2、4、…),请你编程告诉月神,月神有多少种方法爬出深渊
要点:动态规划,类似于爬楼梯,只不过累计求和的不是往前数的两阶,而是2的所有幂阶。根据 https://blog.csdn.net/FlushHip/article/details/83822873 ,输出数据还是要mod 1000000003。
#include<iostream>
#include<vector>
using namespace std;int main(){long long n,k;cin>>n;for(long long i=0;i<n;i++){cin>>k;vector<long long> v;v.push_back(1);// fill out the tablefor(long long j=1;j<=k;j++){long long num=0;long long last=1;while(j>=last){num+=v[j-last];last=last<<1;}v.push_back(num);}cout<<v[k];if(i<n-1)cout<<endl;}return 0;
}
通过键盘输入一串小写字母(a~z)组成的字符串。
请编写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。
例如字符串"babcc"归一化后为"a1b2c2"
之前做过一道类似的题,于是无脑上了python
x=input()
d=dict()
r=''
for i in range(len(x)):if x[i] in d:d[x[i]]+=1else:d[x[i]]=1for i in ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','p','q','r','s','t','u','v','w','x','y','z']:if i in d:r=r+i+str(d[i])
print(r)
只通过了50%,卡在了长到令人发指的一个case上,借用以下大佬的代码
#include <stdio.h>
#define SIZE 128int main(void){int count[26] = {0};char buf[SIZE];
// char c;
// while( ( c = getchar() ) != '\n' )
// count[c-'a'] ++;fgets(buf, SIZE, stdin);int i = 0;while( buf[i] != '\n' ){count[buf[i++] - 'a'] ++;if( i == SIZE ){i = 0;fgets(buf, SIZE, stdin);}}i = 0;while( i < 26 ){if( count[i] != 0 )printf("%c%d",i+'a',count[i]);i ++;}return 0;
}
快手的题还是很灵活的
ref:
https://blog.csdn.net/FlushHip/article/details/83822873
这篇关于算法题(320-快手模拟)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!