S表示1,L表示2,计算由S和L组成的序列之和为N的组合

def func(n):
    def calc_str(s):
        s = s.strip() if s is not None else ""
        s = s.upper()
        result = 0
        for c in s:
            result += 1 if c == "S" else 2
        return result
    result = list()
    if n == 0:
        result.append("")
    elif n == 1:
        result.append("S")
    else:
        offset = -1
        while (n + offset) >= 0:
            for s in func(n + offset):
                if calc_str(s + "S") == n:
                    result.append(s + "S")
                if calc_str(s + "L") == n:
                    result.append(s + "L")
            offset -= 1
    return result

print(func(6))

好像有什么不对的地方,明天再看看

时间: 2024-08-02 00:17:32

S表示1,L表示2,计算由S和L组成的序列之和为N的组合的相关文章

C语言合并两个集合(L,L1) 将L1中不在L中的元素插入到L线性表中

void main(){ Sqlist L,L1; InitList(&L); InitList(&L1); ListInsert(&L, 1, 2); ListInsert(&L, 2, 3); ListInsert(&L, 1, 1); ListInsert(&L1,1,1); ListInsert(&L1,2,2); ListInsert(&L1,3,4); for (int i = 0; i <L1.length; i++) {

php中计算二维数组中某一元素之和

[0] => array(5) { ["id"] => string(2) "11" ["name"] => string(5) "1.jpg" ["suffix"] => string(3) "jpg" ["url"] => string(29) "./Uploads/1/5292f55d208e8.jpg" [&q

python 题目:斐波那契数列计算;题目:站队顺序输出;题目:合法括号组合的生成;题目:用户登录(三次机会)

斐波那契数列计算 B 描述 斐波那契数列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波那契数列元素 调用上述函数,完成如下功能: 用户输入一个整数n,输出所有不超过n的斐波那契数列元素.输出数列的元素和及平均数,输出按照顺序,用英文逗号和空格分割 此题目为自动评阅,请严格按照要求规范输入和输出. def jebona(n): if n==0: return 0 elif n == 1

第4章 编写Java程序,使用while循环语句计算1+1/2!+1/3!+...+1/20!之和

package four; public class fouronetwo { public static void main(String args[]){ double sum = 0,a = 1; int i = 1; while(i <= 20) { sum = sum+a; i = i+1; a = a*(1.0/i); } System.out.println(sum); } } 解释:当i=1, sum=1, i=2, a=1*(1/2); 当i=2, sum=1+1*1/2, i

计算Sn=a+aa+aaa...前五项之和

#include<stdio.h> int main() { int num=0; int i=0,temp=0; int sum=0; scanf("%d",&num); for(i=0;i<5;i++) { temp=temp*10+num; sum=sum+temp; } printf("Sn=%d\n",sum); return 0; }

计算两个整数列表代表的数字之和,返回一个值

class Solution(object): def addTwoNumbers(self, l1, l2): k1=''.join(list(map(str, l1))) k2=''.join(list(map(str, l2))) return int(k1)+int(k2) l1=[1,2,3] l2=[1,1,1] x=Solution() print(x.addTwoNumbers(l1,l2)) 输出 234 原文地址:https://www.cnblogs.com/sea-str

计算两个整数列表代表的数字之和,返回列表

class Solution(object): def addTwoNumbers(self, l1, l2): k1=''.join(list(map(str, l1))) k2=''.join(list(map(str, l2))) nsum=int(k1)+int(k2) res=list(str(nsum)) return list(map(int,res)) l1=[1,2,3] l2=[1,1,1] x=Solution() print(x.addTwoNumbers(l1,l2))

Photoshop中磁力套索的一种简陋实现(Python)

经常用Photoshop的人应该熟悉磁力套索(Magnetic Lasso)这个功能,就是人为引导下的抠图辅助工具.在研发领域一般不这么叫,通常管这种边缘提取的办法叫Intelligent Scissors或者Livewire. 本来是给一个图像分割项目算法评估时的Python框架,觉得有点意思,就稍稍拓展了一下,用PyQt加了个壳,在非常简陋的程度上模拟了一下的磁力套索功能.为什么简陋:1) 只实现了最基本的边缘查找.路径冷却,动态训练,鼠标位置修正都没有,更别提曲线闭合,抠图,Alpha M

java自学之路-day18

数据库 数据库 概念 l  对于一串数据修改其中的一条数据 l  如果用io流就需要全盘读写 然后找到其中的一行 进行修改 l  或者使用数组进行修改 l  这样太复杂 效率慢 所以需要引用数据库 l  数据库本质是一个文件系统 可以看做是一个具有很好的处理数据能力的容器 和集合 数组 都一样 l  里面有严格的数据存储格式 l  数据库管理系统是用一个软件管理数据库 l  常见的数据库管理系统 MYSQL  开源免费 瑞典的公司开发 sun公司收购  Oracle收购了sun MYSQL6.x