当前位置: 编程技术>移动开发
本页文章导读:
▪寻觅主元素 寻找主元素问题分析:所谓找主元素,就是在一个整数序列(数组)中,里面的某一个元素出现的次数超过元素总个数的一半,那么就陈这个元素为主元素。
性质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: 如果存在主元素的话,主元素一定是中位数。
方法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模型徵羽摩柯的骨骼树状图:
我们可以将所有骨骼的位置显示出来。
[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>
最新技术文章: