星海's Blog

老头初学编程

C未解决的问题

1、定义一个数组,编程打印它的全排列。比如定义:

#define N 3
int a[N] = { 1, 2, 3 };
 
程序的主要思路是:
1. 把第1个数换到最前面来(本来就在最前面),准备打印1xx,再对后两个数2和3做全排列。
2. 把第2个数换到最前面来,准备打印2xx,再对后两个数1和3做全排列。
3. 把第3个数换到最前面来,准备打印3xx,再对后两个数1和2做全排列。
可见这是一个递归的过程,把对整个序列做全排列的问题归结为对它的子序列做全排列的问题,注
意我没有描述Base Case怎么处理,你需要自己想。你的程序要具有通用性,如果改变了N和数
组a的定义(比如改成4个数的数组),其它代码不需要修改就可以做4个数的全排列(共24种排
列)。
完成了上述要求之后再考虑第二个问题:如果再定义一个常量M表示从N个数中取几个数做排列(N
== M时表示全排列),原来的程序应该怎么改?
最后再考虑第三个问题:如果要求从N个数中取M个数做组合而不是做排列,就不能用原来的递归过
程了,想想组合的递归过程应该怎么描述,编程实现它。
 
 
 
要看的书
数据结构,操作系统,组成原理,网络

初学C编程(1)

a+++++b这个表达式如何理解?应该理解成a++ ++ +b还是a++ + ++b,还是a + ++ ++b呢?应该按第一种方式理解。编译的过程分为词法解析和语法解析两个阶段,在词法解析阶段,编译器总是从前到后找最长的合法Token。把这个表达式从前到后解析,变量名a是一个Token,a后面有两个以上的+号,在C语言中一个+号是合法的Token(可以是加法运算符或正号),两个+号也是合法的Token(可以是自增运算符),根据最长匹配原则,编译器绝不会止步于一个+号,而一定会把两个+号当作一个Token。再往后解析仍然有两个以上的+号,所以又是一个++运算符。再往后解析只剩一个+号了,是加法运算符。再往后解析是变量名b。词法解析之后进入下一阶段语法解析,a是一个表达式,表达式++还是表达式,表达式再++还是表达式,表达式再+b还是表达式,语法上没有问题。最后编译器会做一些基本的语义分析,这时就有问题了,++运算符要求操作数能做左值,a能做左值所以a++没问题,但表达式a++的值只能做右值,不能再++了,所以最终编译器会报错。

阅读全文

最大公约数与Fibnacci的递归和循环实现

最大公约数与Fibnacci数列的解答。(递归法和循环法)

阅读全文

Python学习笔记(三)

有三种方法可以用来从集合中删除某个值。前两种,discard() 和 remove() 有细微的差异。 如果针对一个集合中不存在的值调用 discard() 方法,它不进行任何操作。不产生错误;只是一条空指令。 区别在这里:如果该值不在集合中,remove() 方法引发一个 KeyError 例外。

阅读全文

关于L[3:1]=['x']=L.insert(3,'x')的解答

Python scales the slice limits to make sure that the lower bound is always less than
or equal to the upper bound (e.g., L[3:1] is scaled to L[3:3], the empty insertion
point at offset 3). Python slices are always extracted from left to right, even if you
use negative indexes (they are first converted to positive indexes by adding the
sequence length)

 

继续阅读

Python学习笔记(2)

学习笔记2

阅读全文

Python相关的网站

1,简明Python教程

一本极好的入门教程

2,Python过关游戏

有很大难度哦,哈哈哈

3,各种编程语言快速索引表

4,

Python编程想要解决的问题

掷硬币概率问题,如100次里6次都是正面的概率,为什么用random()随机数不好

 

股票取值,计算收益

python游戏网站解谜

 

learning python 3rd中文版199页,转化与pickle用法意义不明

阅读全文

我的Python初学代码

# 依云(百合仙子)的解法,高低立下 - __ - import math r = [L[i:i+10] for i in range(math.ceil(len(L)/10))]

阅读全文

Python学习笔记(1)

转义符

假设你想要在一个字符串中包含一个单引号('),那么你该怎么指示这个字符串?例如,这个字符串是What's your name?。你肯定不会用'What's your name?'来指示它,因为Python会弄不明白这个字符串从何处开始,何处结束。所以,你需要指明单引号而不是字符串的结尾。可以通过 转义符 来完成这个任务。你用\'来指示单引号——注意这个反斜杠。现在你可以把字符串表示为'What\'s your name?'

阅读全文