当前位置:  编程技术>移动开发
本页文章导读:
    ▪寻觅主元素        寻找主元素问题分析:所谓找主元素,就是在一个整数序列(数组)中,里面的某一个元素出现的次数超过元素总个数的一半,那么就陈这个元素为主元素。 性质1: 如果存在主元素的话,.........
    ▪ 骨架动画的研究        骨骼动画的研究骨骼动画的研究            10月份排上日程的研究首当其冲的就是骨骼动画了。骨骼动画是三维动画常见的方式,而二维动画则是帧动画,所以需要提高动画的帧率,二维.........
    ▪ 利用StateListDrawable当EditText取得,失去焦点时分别设置其内容的不同颜色       利用StateListDrawable当EditText获得,失去焦点时分别设置其内容的不同颜色MainActivity如下: package cc.teststatelistdrawable; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 利用StateListDrawable当E.........

[1]寻觅主元素
    来源: 互联网  发布时间: 2014-02-18
寻找主元素

问题分析:所谓找主元素,就是在一个整数序列(数组)中,里面的某一个元素出现的次数超过元素总个数的一半,那么就陈这个元素为主元素。

性质1: 如果存在主元素的话,主元素一定是中位数。

方法1:

使用快排O(nlogn)进行排序,找到中位数,然后判断首元素是否和中位数相等、以及尾元素是否和中位数相等。 如果有一个以上的相等,则存在主元素(中位数)。

方法2:

使用O(n)的选择算法找到中位数,然后再判断中位数是不是主元素。

方法3:

性质2:如果一个数组中有主元素,则同时删除两个不相等的值,这个序列中的主元素不会改变。


其中比较好的解决方法是第三种,其实现可用递归,也可用迭代,下面代码分别给出其实现:

递归实现:

//a表示数组,len表示数组长度,num用于递归
int candidate(int *a,int len,int num)
{
    int j = num;
    int c = a[num];
    int counts = 1;
    while(j<len && counts>0)
    {
        j++;
        if(a[j] == c) counts++;
        else counts--;
    }
    if(j == len) return c;
    else candidate(a,len,j+1);
}

void majority_1(int *a,int len)
{
    int c = candidate(a,len,0);//注意数组下标是从0开始,所以递归也从0开始
    int counts = 0;
    for(int j = 0;j<7;j++)
    {
        if(a[j] == c) counts++;
    }
    if(counts > 7/2) cout<<c<<endl;
    else
    {
        cout<<"none"<<endl;
        return;
    }
}


迭代实现:

void majority_2(int *a, int len)
{
    int seed = a[0];
    int count = 1;

    for (int i = 1; i < len; i++)
    {
        if (seed == a[i])
            count++;
        else
        {
            if (count == 0)
            {
                seed = a[i];
                count = 1;
            }
            else
                count--;
        }
    }

    // justify seed..
    count = 0;
    for (int i = 0; i < len; i++)
    {
        if (a[i] == seed)
            count++;
    }
    if (count > len/2)
        cout<<seed<<endl;
    // no main elements in the array...
    else cout<<"none"<<endl;

}


测试示例:

int main()
{
    int a[7] = {1,2,3,1,2,1,1};
    majority_1(a,7);
    majority_2(a,7);
    return 0;
}

结果都是输出:1


    
[2] 骨架动画的研究
    来源: 互联网  发布时间: 2014-02-18
骨骼动画的研究
骨骼动画的研究

 

         10月份排上日程的研究首当其冲的就是骨骼动画了。骨骼动画是三维动画常见的方式,而二维动画则是帧动画,所以需要提高动画的帧率,二维动画需要做的工作比三维动画要多得多,这需要更多插画师多日的辛勤工作,而三维动画中每一帧是计算机自动生成的,所以增加的工作量不是特别的多。

         有关骨骼动画的相关知识,可以参见网上的这一篇文章。网络上也有很多国内国外的前辈对骨骼动画研究的成果,这之中既有二维的,也有三维的。我在参考这些研究成果的同时,也开始了自己的研究。

         骨骼动画需要的是一棵树状结构的骨骼拓扑图,它表示了骨骼们相互关联。下面是一个pmd模型徵羽摩柯的骨骼树状图:


    我们可以将所有骨骼的位置显示出来。


1楼dizuo4小时前我本科毕设搞的就是骨骼动画编辑,骨骼结构一般是多叉树,bvh最常见。Re: jiangcaiyang1234小时前回复dizuon嗯,已经拜读大神的文章。要是从头开始研究骨骼动画,时间肯定不够,加上国庆玩了五天,剩下给我的假日不多了,要加班加点拿一个实例进行研究才行。BVH是一种常见的动作文件,如果项目需要,我会进行深入的学习。

    
[3] 利用StateListDrawable当EditText取得,失去焦点时分别设置其内容的不同颜色
    来源: 互联网  发布时间: 2014-02-18
利用StateListDrawable当EditText获得,失去焦点时分别设置其内容的不同颜色

MainActivity如下:

package cc.teststatelistdrawable;

import android.os.Bundle;
import android.app.Activity;
/**
 * Demo描述:
 * 利用StateListDrawable当EditText获得,失去焦点时分别设置其内容的不同颜色
 * 
 * StateListDrawable从其名字就可以大概知晓其用途.用于在其
 * 作用的控件状态发生改变时改变其背景或者颜色.
 * 常见的状态为:是否获得焦点,是否被勾选(check),是否被按下等.
 * 
 * 该Demo主要使用了StateListDrawable(xml形式)来实现的,当然
 * 亦可采用代码形式.可以参见下面的资料
 * 
 * 参考资料
 * 1 Android疯狂讲义(第二版) 作者李刚
 * 2 http://blog.csdn.net/sodino/article/details/6797821
 * 3 http://gundumw100.iteye.com/blog/850636
 * 4 http://blog.csdn.net/qinjuning/article/details/7474827
 * 5 http://yq135314.iteye.com/blog/1333511
 *   Thank you very much
 *
 */
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
}

 

main.xml如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <EditText
        android:layout_width="220dip"
        android:layout_height="wrap_content"
        android:hint="username" 
        android:textColor="@drawable/statelistdrawable"
     />
    
    <EditText
        android:layout_width="220dip"
        android:layout_height="wrap_content"
        android:hint="password" 
        android:textColor="@drawable/statelistdrawable"
     />

</LinearLayout>


statelistdrawable.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_focused="true" android:color="#f55"></item>
    <item android:state_focused="false" android:color="#eee"></item>
</selector>

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3