蓝杯四十一

作者: 逍遥_9353 | 来源:发表于2018-02-06 20:24 被阅读7次

算法训练 数组查找及替换 

时间限制:1.0s  内存限制:512.0MB

   

问题描述

  给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。元素个数不超过100,b在1至100之间。

输入格式

  第一行为数组元素个数和整数b

  第二行为数组各个元素

输出格式

  按照要求输出

样例输入

7 2

77 11 66 22 44 33 55

样例输出

11 33  55 M

#include<iostream>

#include<algorithm>

#include<string>

#include<cstring>

#include<stack>

#include<queue>

#include<cmath>

using namespace std;

int main() {

    int n, b;

        cin >> n >> b;

    int array[100];

    int temp;

    int num=0;

    for (int i = 0; i < n;i++) {

        cin >> temp;

        if (temp%b!=0) {

            array[num] = temp;

            num++;

        }

    }

    for (int i = 0; i < num;i++) {

        for (int j = 0; j < num-i-1;j++) {//num-i-1再减去1是为了防止越界

            if (array[j]>array[j+1]) {

                int bet;

                bet = array[j];

                array[j] = array[j + 1];

                array[j + 1] = bet;

            }

        }

    }

    for (int i = 0; i < num; i++) {

        if (array[i]>=(int)'A'&&array[i] <= (int)'Z') {

            cout << (char)array[i] << " ";//强制类型转换!

        }

        else {

            cout << array[i] << " ";

        }

    }

    return 0;

}

思路分析:

①定义变量:元素个数,整数,整数数组,记录真正输入的数的个数(初始化为0);

②输入元素个数,整数,数组各个元素;

③for语句循环,if语句(判断在输入的时候就判断是否应该删除);

④冒泡法,for语句双重循环,if语句判断,从小到大排序;

⑤for语句循环,if语句判断并输出。

算法提高 现代诗如蚯蚓 

时间限制:1.0s  内存限制:256.0MB

提交此题   

问题描述

  现代诗如蚯蚓

  断成好几截都不会死

  字符串断成好几截

  有可能完全一样

  请编写程序

  输入字符串

  输出该字符串最多能断成多少截完全一样的子串

输入格式

  一行,一个字符串

输出格式

  一行,一个正整数表示该字符串最多能断成的截数

样例输入

abcabcabcabc

样例输出

4

样例说明

  最多能断成四个”abc”,也就是abc重复四遍便是原串

  同时也能断成两个”abcabc”

  最坏情况是断成一个原串”abcabcabcabc”

数据规模和约定

  字符串长度<=1000

*/

#include <iostream> 

#include <string> 

using namespace std; 

int main() { 

    string s; 

    cin >> s; 

    int len = s.length(); 

    int ans = len; 

  for(int i = 1; i < len/2; i++) { 

        if(len % i != 0) 

            continue; 

        int flag = 0; 

        string t1, t2; 

        t1 = s.substr(0, i); 

        for(int j = i; j < len; j = j + i) { 

            t2 = s.substr(j, i); 

            if(t2 != t1) { 

                flag = 1; 

                break; 

            } 

            t1 = t2; 

        } 

        if(flag == 0) 

            ans = ans < i ? ans : i; 

    } 

    cout << len / ans; 

    return 0; 

思路分析:

①定义变量:一个字符串,循环次数;

②输入一个字符串;

③for语句循环,if语句判断(截成的段数);

④for循环,if语句判断是否相等,if语句判断该字符串最多能断成的截数的三目运算的比较;

⑤输出该字符串最多能断成的截数。

相关文章

  • 蓝杯四十一

    算法训练 数组查找及替换 时间限制:1.0s 内存限制:512.0MB 问题描述 给定某整数数组和某一整数b...

  • 蓝杯二十

    /*数的读法 问题描述Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万...

  • 蓝杯十八

    /*矩形面积交 问题描述平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对...

  • 蓝杯四十

    算法训练 统计单词个数 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个长度不超过200...

  • 蓝杯十二

    一、/*分糖果 问题描述有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都...

  • 蓝杯九

    /*阶乘计算 问题描述 输入一个正整数n,输出n!的值。其中n!=1*2*3*…*n。算法描述n!可能很大,而计算...

  • 蓝杯十三

    一、/*打印下述图案问题描述使用循环结构打印下述图形,打印行数n由用户输入。打印空格时使用"%s"格式,向prin...

  • 蓝杯十五

    /*买不到的题目问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋...

  • 蓝杯六

    一、/*所有水仙花数 问题描述 打印所有100至999之间的水仙花数。所谓水仙花数是指满足其各位数字立方和为该数字...

  • 蓝杯八

    一、/*最大最小值 问题描述给定 N 个整数,请你找出这 N 个数中最大的那个和最小的那个。 输入格式第一行包含一...

网友评论

    本文标题:蓝杯四十一

    本文链接:https://www.haomeiwen.com/subject/phlnzxtx.html