Toggle navigation
C语言网
教程
博客
团队
训练
训练
题库
题集
状态
排名
比赛
比赛
标准
自主
考试
网课
AI助手
AI助手
代码解释
语言转换
编程助手
zk
私信TA
用户名:201808064428
访问量:321
签 名:
等 级
P3
排 名
21229
经 验
627
参赛次数
0
文章发表
1
年 龄
0
在职情况
学生
学 校
中原工学院
专 业
自我简介:
TA的其他文章
Day1~Day3训练总结
浏览:
213
你可能喜欢
求最大公约数-模板题
浏览:
873
C语言程序设计教程(第三版)课后习题7.5 (C++代码)
浏览:
780
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)
浏览:
649
【计算两点间的距离】 (C语言代码)
浏览:
879
1908题解
浏览:
633
Day1~Day3训练总结
作者:
zk
发表时间:2020-01-15 18:54:54
浏览:213 | 评论:0
** 问题 2083: [蓝桥杯][基础练习]十进制转十六进制 ** 思路:利用递归思想 ```cpp void 16bit(int num){ if(num>15) { show16bit(num/16); } switch(num%16) { case 10: cout<<"A"; break; case 11: cout<<"B"; break; case 12: cout<<"C"; break; case 13: cout<<"D"; break; case 14: cout<<"E"; break; case 15: cout<<"F"; break; default: cout<
>num; 16bit(num); return 0; } ``` **问题 2086: [蓝桥杯][算法提高VIP]最长公共子序列** 思路:利用动规创建dp数组储存,分两种情况当两个字符串a,b; a[i-1]==b[j-1]时,dp[i][j]=dp[i-1][j-1]+1;这里注意i和j是从1出发的,所以对于两个字符串就是i-1和j-1; 其他情况时:dp[i][j] = max(dp[i-1][j], dp[i][j-1]);因为没有相同就不会跟新,所以继承上一最大的值。 ```cpp #include
using namespace std; int dp[1001][1001]; int main() { string a, b; cin >> a >> b; for(int i = 1; i <= a.length(); i++) { for(int j = 1; j <= b.length(); j++) { if(a[i-1] == b[j-1]) dp[i][j] = dp[i-1][j-1] + 1; else dp[i][j] = max(dp[i-1][j], dp[i][j-1]); } } cout << dp[a.length()][b.length()]; return 0; } ``` **问题 2088: [蓝桥杯][算法提高VIP]快速幂** 思路:a^b%c=(a%c*a%c*....*a%c)%c,通过快速幂算法: 当指数为偶数时,把指数缩小为一半,底数变为原来的平方 当指数为奇数时,把指数减去1,使其变成一个偶数,收集好底数的一次方,再执行偶数时的步骤 ```cpp long long PowerMod(long long a, long long b, int c) { long ans = 1; a = a % c;**** if (b > 0) { while (b > 0) { if (b % 2 == 1) ans = (ans * a) % c; b = b / 2; a = (a * a) % c; } return ans%c; } else if (b == 0 && c == 1) return 0; else if (b == 0 && c != 1) return 1; } int main() { long long n,m; int p; cin>>n>>m>>p;**** cout<
>n; int a,b; while(n--) { cin>>a>>b; for(int i=1;i<=b;i++) { int j,p,k; for(j=a;j>a/2;j--) { for(p=a-j;p>0;p--) cout<<' '; cout<<'X'; for(k=0;k<2*j-a-2;k++) cout<<' '; if(j==a/2+1) break; else cout<<'X'; cout<
0;p--) cout<<' '; cout<<'X'; for(k=0;k<2*j-a-2;k++) cout<<' '; if(j==a/2+1) break; else cout<<'X'; cout<
0;p--) cout<<' '; cout<<'X'; for(k=0;k<2*j-a-2;k++) cout<<' '; if(j==a/2+1) break; else cout<<'X'; cout<
>n; for(a=1;a<10;a++){ for(b=0;b<10;b++){ for(c=0;c<10;c++){ if(2*a+2*b+c==n){ flag=false; cout<
>a[i]; for(int i=0;i
>b[i]; for(int i=0;i
>c[i]; sort(a,a+n); sort(b,b+n); sort(c,c+n); sum = 0; for(int i=0;i
>n; prime(n); long long sum=0; for(int i=2;i<=n;i++) { if(Prime[i]==0) sum+=i; } cout<
>n; int i=1; do{ if(i==n) { for(int j=0;j<10;j++) cout<
#include
#include
#include
#include
#include
using namespace std; const int INF=0x3f3f3f3f; struct node { int first,second; string s; }; int N,M; int d[1005][1005]; char a[1005][1005]; int dx[4]={1,0,0,-1}; int dy[4]={0,-1,1,0}; char pos[4]={'D','L','R','U'}; int sx,sy,gx,gy; int x,y,nx,ny; void bfs() { memset(d,INF,sizeof(d)); sx=0,sy=0,gx=N-1,gy=M-1; queue
que; node p; p.first=sx,p.second=sy,p.s=""; que.push(p); d[p.first][p.second]=0; node k,l; while(!que.empty()){ k=que.front(); que.pop(); x=k.first,y=k.second; if(x==gx&&y==gy) break; for(int i=0;i<4;i++){ nx=x+dx[i],ny=y+dy[i]; if(nx>=0&&nx
=0&&ny
>N>>M){ for(int i=0;i
>a[i][j]; } } bfs(); } return 0; } ```
0.0分
0 人评分
分享
收藏
C语言网推出会员服务,提供C/C++/算法/Python等多套视频学练课程+源码资源社群答疑+私活推荐等资源,享受丰富的技术学习到变现的乐趣,
以含金量和学习效果勇敢挑战同类辅导
! 点击了解开通
评论区
«
»
提交
精彩推荐
大家好,我是验题君
浏览:
568
IP判断 (C语言代码)
浏览:
530
简单的a+b (C语言代码)
浏览:
506
找出最长的字符串来 (C语言代码)
浏览:
1753
神奇的fans (C语言代码)
浏览:
957
WU-C语言程序设计教程(第三版)课后习题12.3 (C++代码)
浏览:
840
C语言训练-斐波纳契数列 (C语言代码)
浏览:
503
三进制小数 (C语言代码)
浏览:
812
简单的a+b (C语言代码)
浏览:
503
【回文数(二)】 (C语言代码)
浏览:
688