精华内容
下载资源
问答
  • 发散思维,沉淀思想

    2011-02-17 10:43:00
    不管是在生活或是工作的哪一个方面的问题,我们都不应该有固定的思维模式,对于一些精华,我觉得关键不是实现和结果,而应该是对于一个问题所带给我们的思维方式,也就是对于需求的实现我们有很多的思路,需要的是...

    作为一个程序员,很显然,很多问题我都会从程序员的角度来思考;不管是在生活或是工作的哪一个方面的问题,我们都不应该有固定的思维模式,对于一些精华,我觉得关键不是实现和结果,而应该是对于一个问题所带给我们的思维方式,也就是对于需求的实现我们有很多的思路,需要的是我们要从中选取一种最优的解决方案,我想那才是最重要的。

    展开全文
  • 根据问题的特点选用特定的...思想指的是你对问题的分析方法和思考模式,而语言只是一种具体的表达,比如对于一个具体的问题,你的思想决定了你对问题的看法、分析问题的方法,处理这个问题的思路,以及怎样使得这...

    根据问题的特点选用特定的思想和方法论来分解、组合各类元素,从而解决问题。

    针对问题特点,选择合适的编程技术解决问题。

    思想指的是你对问题的分析方法和思考模式。

     

    最基本的编程思想是分与合;

     

    业务决定功能,功能决定技术。

     

    思想指的是你对问题的分析方法和思考模式,而语言只是一种具体的表达,比如对于一个具体的问题,你的思想决定了你对问题的看法、分析问题的方法,处理这个问题的思路,以及怎样使得这个问题的解决可以用计算机可以接收的方式进行处理的转换及实现的能力。而语言只是在你找到这个问题的计算机解决方案后的一种具体实现。

    编程思想注重的是解决问题的方法论,取决于你的专业能力(计算机知识和目标问题领域的专业知识)和综合素质,而语言注重的是表达的方式(语法),你只要熟悉语法一般情况下就可以搞定。编程思想可以通过学习,交流以及在实践中总结得来。开始可以通过一门语言来体会这些已有的编程思想,比如面向对象,面向过程等,但最终你应该不断总结、思考、领悟解决问题的通用方法以形成你自己的思想。

     

    编程思想就是用一种系统的方法去解决各种问题。

     

    首先要提到的是,不论是过程论还是对象论,都承认一点,那就是程序世界本质上只有两种东西——数据和逻辑。数据天性喜静,构成了程序世界的本体和状态;逻辑天性好动,作用于数据,推动程序世界的演进和发展。尽管上述观点是统一的,但是在数据和逻辑的存在形式和演进形式上,过程论和对象论的观点截然不同。

          过程论认为:数据和逻辑是分离的、独立的,各自形成程序世界的一个方面(Aspect)。所谓世界的演变,是在逻辑作用下,数据做改变的一个过程。这种过程有明确的开始、结束、输入、输出,每个步骤有着严格的因果关系。过程是相对稳定的、明确的和预定义的,小过程组合成大过程,大过程还可以组合成更大的过程。所以,程序世界本质是过程,数据作为过程处理对象,逻辑作为过程的形式定义,世界就是各个过程不断进行的总体。

          对象论认为:数据和逻辑不是分离的,而是相互依存的。相关的数据和逻辑形成个体,这些个体叫做对象(Object),世界就是由一个个对象组成的。对象具有相对独立性,对外提供一定的服务。所谓世界的演进,是在某个“初始作用力”作用下,对象间通过相互调用而完成的交互;在没有初始作用力下,对象保持静止。这些交互并不是完全预定义的,不一定有严格的因果关系,对象间交互是“偶然的”,对象间联系是“暂时的”。世界就是由各色对象组成,然后在初始作用力下,对象间的交互完成了世界的演进。

    展开全文
  • 在网上看了不少Buff系统的设计,总是不如我的意,所以索性自己思考着做了一个,欢迎大家提意见。 思想: 能够被加上Buff的游戏物体,说明他在游戏中的地位已经相当重要,所以我们值得让他继承Mono 相对于集中管理...

    在网上看了不少Buff系统的设计,总是不如我的意,所以索性自己思考着做了一个,欢迎大家提意见。

    思想:

    1. 能够被加上Buff的游戏物体,说明他在游戏中的地位已经相当重要,所以我们值得让他继承Mono
    2. 相对于集中管理的BuffManager,我倾向于每个游戏物体都是自己Buff的管理者,当自己被加上Buff的时候,自己要做出相应的反应
    3. Buff有两个最基本的共同点 1.持续时间    2.Buff的种类

    思维导图

    总结

    所有能够被施加Buff的游戏物体都继承一个基类CostumEntityLogic(CostumEntityLogic继承自MonoBehaviour)

    它包含以下内容

    1. 持有一个List<BuffBase> ,里面包含自身的所有Buff,并且在Update进行轮询来达成对Buff状态更新的目的
    2. 包含所有的当物体被施加Buff时所需要做出的反映函数和Buff开关(bool类型)(视情况可以将CostumEntityLogic分为好几个类,例如PlayerLogic,MonsterLogic等)
    3. AddBuff函数,List<BuffBase>添加Buff,具体的Buff执行逻辑
    4. 在Update中对List<BuffBase>进行轮询,保证Buff状态的更新
    5. RemoveBuff函数,List<BuffBase>移除Buff,具体的Buff执行逻辑

    下篇博客将会给出具体的代码和实战中的使用

     

     

    展开全文
  • 思路 求出连续的0或1的个数,构成一个数组。 比如: 00111100011 那就应该是 2 4 3 2 借鉴回文串的中心拓展的思想,相邻的一对数字可以新增加min(cnt[i],cnt[i+1])min(cnt[i],cnt[i+1])min(cnt[i],cnt[i+1]),累计...

    计数二进制子串

    思路

    求出连续的0或1的个数,构成一个数组。
    比如: 00111100011
    那就应该是 2 4 3 2
    借鉴回文串的中心拓展的思想,相邻的一对数字可以新增加min(cnt[i],cnt[i+1])min(cnt[i],cnt[i+1]),累计求和即可。

    class Solution {
    public:
        int countBinarySubstrings(string s) {
            vector<int> cnt;
            int l = 0, r = 0, n = s.size();
            while(l<n){
                while(r<n && s[r]==s[l]){
                    r++;
                }
                cnt.push_back(r-l);
                l = r;
            }
            int ans = 0;
            for(int i=1;i<cnt.size();i++){
                ans += min(cnt[i],cnt[i-1]);
            }
            return ans;
        }
    };
    

    因为每一次都依赖上个cnt[i],所以空间复杂度可以优化到O(1)。

    拓展思考

    5485. 找出最长的超赞子字符串560. 和为K的子数组974. 和可被 K 整除的子数组的启发,如果这个题目改一下,改成如下:

    给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,重复出现的子串要计算它们出现的次数。 (也就是不需要连续了)

    如果是这个题目怎么做呢?

    • 纯暴力法:O(n3)O(n^3)
    • 用前缀和优化一下:O(n2)O(n^2)(省去了O(n)的检查)
      但这还不是最优解。
      时间复杂度:O(nlog(n))O(n*log(n))
    class Solution{
    public:
        int countBinarySubstringsII(string& s){
            int ans = 0, n = s.size();
            int p0 = 0,p1 = 0; //p1记录0出现的次数,p0记录1出现的次数。
            //差值为0的出现了一次
            unordered_map<int,int> mp = {{0,1}}; //mp[i] = j 表明p1-p0==i的前缀串有j个
            for(int i=0;i<n;i++){
                if(s[i]=='0'){
                    p0++;
                }else{
                    p1++;
                }
                int diff = p1-p0;
                ans += mp[diff];
                mp[diff]++;
            }
            return ans;
        }
    };
    

    完整的测试代码:

    #include<stdio.h>
    #include<iostream>
    #include<cmath>
    #include<math.h>
    #include<string>
    #include<string.h>
    #include<algorithm>
    #include<stack>
    #include<queue>
    #include<vector>
    #include<map>
    #include<unordered_map>
    #include<set>
    #include <unordered_set>
    #define ms0(a) memset(a,0,sizeof(a))
    #define ll long long
    #define ull unsigned long long
    #define INF0x3f3f3f3f
    const int dx[] ={-1,1,0,0,-1,-1,1,1};
    const int dy[] = {0,0,-1,1,-1,1,-1,1};
    using namespace std;
    
    class Solution{
    public:
        int countBinarySubstringsII(string& s){
            //差值为0的出现了一次
            unordered_map<int,int> mp = {{0,1}};
            int ans = 0, n = s.size();
            int p0 = 0,p1 = 0;
            for(int i=0;i<n;i++){
                if(s[i]=='0'){
                    p0++;
                }else{
                    p1++;
                }
                int diff = p1-p0;
                ans += mp[diff];
                mp[diff]++;
            }
            return ans;
        }
    };
    
    class Solution2{
    public:
        int BF(string &s){
            int ans = 0, n = s.size();
            for(int i=0;i<n;i++){
                for(int j=i;j<n;j++){
                    if(check(s,i,j)){
                        ans++;
                    }
                }
            }
            return ans;
        }
    
        bool check(string&s,int l,int r){
            int s0 = 0, s1 = 0;
            for(int i=l;i<=r;i++){
                if(s[i]=='0') s0++;
                else s1++;
            }
            return s0==s1;
        }
    };
    
    
    int main(){
        Solution solution;
        Solution2 solution2;
        string s;
        while(1){
            cin>>s;
            printf("posibble:%d      BF:%d\n",solution.countBinarySubstringsII(s),solution2.BF(s));
        }
        return 0;
    }
    
    展开全文
  • 思维导图的好处有哪些?在不同的场合中使用思维...激发兴趣思维导图的目的是帮助思考和记忆,而且结构清晰,一目了然更容易让我们对导图的主题有全面清晰地认识,越了解思维导图可以从里面得到更加深刻的思想。也激...
  • 《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。...
  • 面对对象基本思想

    2020-09-23 17:20:50
    物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂的问题,适合处理需要多人协作的问题! 注意...
  • 数据分析或者数据处理培养分析思维;金字塔原理是一种重点突出、逻辑清晰、...搭建金字塔的具体做法是:自上而下表达,自下而上思考,纵向疑问回答/总结概括,横向归类分组/演绎归纳,序言讲故事,标题提炼思想精华。
  • 然后联想到《范畴论》这一纯数学的研究方法,表达的思路思维基本是一致的,所以本书最后一节可以作为函数式思维的一个科普读物。 具体内容可以网上查找阅读,里面也确认了我之前关于类型与函数之间关系的思考与...
  • 《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。...
  • 《像计算机科学家一样思考Python》按照培养读者像计算机科学家一样的思维方式的思路来教授Python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。...
  • 数据运营思维导图

    2018-04-26 14:24:22
    数据分析是精细化运营,要建立起体系化思维(金字塔思维) 自上而下 目标—维度拆解—数据分析模型—发现问题—优化策略 自下而上 异常数据 影响因素 影响因素与问题数据之间的相关关系 原因 优化策略 数据...
  • 《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。...
  • 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程思索。 面向对象适合处理复杂的问题,适合处理需要多人协作的问题! 对于...
  • 高清完整版《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍...
  • 2019数据运营思维导图

    2019-03-29 21:34:09
    要建立起体系化思维(金字塔思维) 自上而下 目标—维度拆解—数据分析模型—发现问题—优化策略 自下而上 异常数据 影响因素 影响因素与问题数据之间的相关关系 原因 优化策略 数据化运营7大经典思路 以目标为导向...
  • 像计算机科学家一样思考Python按照培养读者像计算机科学家一样的思维方式的思路来教授Python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。《像...
  • 下载地址:网盘下载内容简介······《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,...
  • 《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。...
  • 面向对象是一种思想,他让我们在分析和解决问题时,把思维和重点转向现实中的客体中来,然后通过UML工具理清这些客体之间的联系,最后用面向对象的语言实现这种客体以及客体之间的联系。它分为面向对象的分析(OOA),...
  • 《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。...
  • 这本书和《如何解题》都是讲思维方式,不过这本是针对编程而言,更加对口,不过看完发现,优秀的思维方式往往是很相似的。 重要观点:面对问题,是有一定的系统性的方式实施的。 步骤 1.用形式化的方式陈述问题 ...
  • 1)出现故障的老男孩的另类分析方法和思路思维。 2)学会感恩,会让你的路更宽(老男孩走过的经验)。 3)运维规范、制度及如何去实施的思路引导(重中之重)。 4)思想、思维比技术本身更值钱,技术筒子要思考下...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 282
精华内容 112
关键字:

思考思路思维思想