算法小结---三颗星

First

小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。

从n开始倒推,在两个魔法机器之间选择,期间一直保持为整数,直到n==0,得出的魔法机器字符标记存入数组,此时的顺序为逆序,输出时需要逆置.

#include<stdio.h>
int fun1(int x){
    int t=(x-1)/2;
    if((x-1)%2==0)
        return t;
    else return -1;
}
int fun2(int x){
    int t=(x-2)/2;
    if((x-2)%2==0)
        return t;
    else return -1;
}
int main(){
    int need;
    int i=0;
    int j;
    scanf("%d",&need);
    char str[30];
    while(need){
        if(fun1(need)!=-1){
            need=fun1(need);
            str[i++]='1';
        }
        else if(fun2(need)!=-1){
            need=fun2(need);
            str[i++]='2';
        }
    }
   for(j=i-1;j>=0;j--){
       printf("%c",str[j]);
   }
}

Second

为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1.

此处为正整数的逆置

#include<stdio.h>
int main(){
    int num;
    int r=0;
    scanf("%d",&num);
    int f=num;
    while(num){
        r=r*10+num%10;
        num=num/10;
    }
    printf("%d",(r+f));
}

Third

一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:'aaa','bb','c'。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。

DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字放在这个位置。

import java.util.Scanner;
import java.text.DecimalFormat;
public class Main{
    public static void main(String [] args) {
         Scanner sc = new Scanner(System.in);
         String str = sc.nextLine();
         float n=1;
         for(int i=1;i<str.length();i++){

         if(str.charAt(i)!=str.charAt(i-1)){
             n++;
         }
        }
        DecimalFormat df = new DecimalFormat("#.00");
             System.out.println(df.format(str.length()/n));
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 小憩过后,双手捧下睡在脸上的它--《阅读是一座随身携带的避难所》,因它散发的浓郁书香,让她不禁梦回十年,她曾作的一...
    梨醒醒阅读 693评论 9 8
  • 今天依然在读《把时间当作朋友》这本书,我发现自己遇到了瓶颈,有很多想法,却又有些混乱的交织在一起。“拿起笔记录下来...
    羽上惊鸿阅读 171评论 0 0