【算法集训 | 希冀刷题】考前一刷

简介: 【算法集训 | 希冀刷题】考前一刷

 👉引言


铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉


💖 ❄️我们的算法之路❄️💖


   众所周知,作为一名合格的程序员,算法 能力 是不可获缺的,并且在算法学习的过程中我们总是能感受到算法的✨魅力✨。

☀️🌟短短几行代码,凝聚无数前人智慧;一个普通循环,即是解题之眼🌟☀️

💝二分,💝贪心,💝并查集,💝二叉树,💝图论,💝深度优先搜索(dfs) ,💝宽度优先搜索(bfs) ,💝数论,💝动态规划等等, 路漫漫其修远兮,吾将上下而求索! 希望在此集训中与大家共同进步,有所收获!!!🎉🎉🎉


    今日主题:希冀OJ考前一刷


 👉⭐️第一题💎💎


   ✨题目


      8504. Sum of Digits

image.png


   ✨思路:


由于数字很大很大,所以只能转换为字符串,然后将每个字符加起来模拟题目要求即可,这里用递归实现(省事),当然也可以自己搞个while代替系统栈,实现类递归


   ✨代码:


#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int sum;
void deal(char* dig) {
  int s=atoi(dig); if (0 <= s && s <= 9)return;
  s = 0;
  for (int i = 0; i < strlen(dig); i++) {
    s += dig[i] - '0';
  } 
  sprintf(dig, "%d", s);
  sum++;
  deal(dig);
  return;
}
int main()
{
  char str[1000000] = { 0 };
  scanf("%s", str);
  deal(str);
  printf("%d", sum);
  return 0;
}


 👉⭐️第二题💎💎


   ✨题目


      8578. 纸片抽取image.png

使用暴力搜索,根据题意可知, 这里限制了搜索深度为4,所以一股脑写递归即可,记得回溯恢复现场哦


   ✨代码:


#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int sum = 4;
int process(int num[], int n, int m) {
  if (sum<0||m < 0)return 0;
  if ((!sum) && (!m))return 1;
  for (int i = 0; i < n; i++) {
    sum--;
    int f = process(num, n, m - num[i]);
    sum++;
    if (f)return 1;
  }
  return 0;
}
int main()
{
  int num[50] = { 0 }, m, n;
  scanf("%d%d", &m, &n);
  for (int i = 0; i < n; i++)scanf("%d", &num[i]);
  if (process(num, n, m))printf("yes");
  else printf("no");
  return 0;
}


 👉⭐️第三题💎


   ✨题目


     8545. 括号匹配问题

image.png


   ✨思路:


括号匹配问题绝不是遍历字符串,分别统计左括号和右括号就可以的,而应该只统计左括号的多余数量,也就是如果遇到有括号,左括号数量减一,这样才能完美匹配(防止入坑)


   ✨代码:


#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
  char str[1024];
  scanf("%s", str); int a = 0;
  for (int i = 0; i < strlen(str); i++)
  {
    if (str[i] == '(')a++;
    else if (str[i] == ')')a--;
    if(a<0){
      printf("n");return 0;
    }
  }
  if (a == 0)
    printf("y");
  else
    printf("n");
  return 0;
}


 👉⭐️第四题💎


   ✨题目


      8532. 数字游戏

image.png


   ✨思路:


合法X的范围一定是2到sqrt(n),那么就从最大开始递减,然后用个while循环去判断以及计算n为X的k次幂


   ✨代码:


#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include<math.h>
int main()
{
  while (1)
  {
    int N; scanf("%d", &N);
    if (!N)break;
    int t = sqrt(N); int i; int sum = 0;
    for (i = t; i >= 2; i--) {
      int n = N;
      while (n != 1)
      {
        if (!(n % i)) { sum++; n /= i; }
        else  break;
      }
      if (n == 1)break;
    }
    if (i == 1)printf("0 0\n");
    else printf("%d %d\n", i, sum);
  }
  return 0;
}


  ⭐️总结⭐️


下午考c语言程序设计,现在先练练手,找了几道简单的,但是也比较有意思,希望下午能满分🙏🙏🙏,莫要出意外,我保证多测各种边界数据(这****的OI赛制)!

🌹写在最后💖: 路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹


相关文章
|
2月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
5月前
|
自然语言处理 算法
算法刷题(二十三):Bigram 分词
算法刷题(二十三):Bigram 分词
41 0
|
5月前
|
算法
算法刷题(二十二):宝石与石头
算法刷题(二十二):宝石与石头
39 0
|
7月前
|
算法 IDE 程序员
【day1】【洛谷算法题】-B2002Hello,World-刷题反思集
【day1】【洛谷算法题】-B2002Hello,World-刷题反思集
|
7月前
|
算法
算法刷题-数组
算法刷题-数组
36 0
算法刷题-数组
|
20天前
|
算法
算法系列--链表刷题(二)(下)
算法系列--链表刷题(二)(下)
16 0
|
8月前
|
算法
炸了!力扣官方首发了这套1568页LeetCode算法刷题笔记(彩页版)
你知道现在LeetCode算法在大厂中的重要性吗? 前几天小编看了一个国内算法大神的短视频,他就在视频中指出了算法对当下无论是生活还是找工作中都是非常重要的! 没错这个人就是江湖人称“左神”的左程云老师 小编也简单看了一下一些比较知名互联网大厂的招聘,像阿里,字节,美团,京东,百度等都在简介明确写上了要求“算法精通”! 那么如何达到“算法精通”今天小编特意给大家分享出一套1568页的LeetCode算法刷题(彩页版)笔记,助力你早日在简历写上“算法精通”
炸了!力扣官方首发了这套1568页LeetCode算法刷题笔记(彩页版)
|
4月前
|
算法 定位技术
每日刷题|贪心算法初识
每日刷题|贪心算法初识
|
5月前
|
算法
六六力扣刷题贪心算法之柠檬水找零
六六力扣刷题贪心算法之柠檬水找零
38 0
|
5月前
|
人工智能 算法 索引
六六力扣刷题贪心算法之K次取反后最大化的数组和
六六力扣刷题贪心算法之K次取反后最大化的数组和
22 0