清宮圖 生男生女java 算法 c算法

閒的無聊,弄個清宮圖,算算,不多說了,代碼貼上。

 通過查一個二維表,豎向是年齡,橫向是月份,返回 0女、1男。

 先上JAVA版(先前有點問題,補充修改再貼上)的:

package com.example.babyforecast;

/**
 * 生男生女算法 :通過查一個二維表,豎向是年齡,橫向是月份,0女,1男。
 * 
 * @fileName BoyOrGirl.java
 * @author naibo-liao
 * @CreateTime 2013-9-6 上午10:16:26
 */
public class BoyOrGirl {
	/**
	 * 根據年齡和受孕月份來直接獲得結果
	 * 
	 * @param iAge
	 *            年齡
	 * @param iMonth
	 *            受孕月份
	 * @return
	 */
	public static int GetBabyResult(int iAge, int iMonth) {
		int iResultTable[][] = {{0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1},// 18
				{1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0},// 19
				{0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0},// 20
				{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},// 21
				{0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0},// 22
				{1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0},// 23
				{1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0},// 24
				{0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1},// 25
				{1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0},// 26
				{0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1},// 27
				{1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0},// 28
				{0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},// 29
				{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},// 30
				{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},// 31
				{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},// 32
				{0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1},// 33
				{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1},// 34
				{1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1},// 35
				{0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1},// 36
				{1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1},// 37
				{0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0},// 38
				{1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0},// 39
				{0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0},// 40
				{1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1},// 41
				{0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0},// 42
				{1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1},// 43
				{1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0},// 44
				{0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1},// 45
		};
		if (iAge < 18 || iAge > 45 || iMonth < 1 || iMonth > 12) {
			return 2;
		}
		return iResultTable[iAge - 18][iMonth - 1];
	}

	/**
	 * 通過受孕年齡年齡來獲取一年內生男生女的走勢
	 * @param iAge 考慮受孕年齡
	 * @return
	 */
	public static int[] GetBabyResultFromAge(int iAge) {

		int iResultTable[][] = {{0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1},// 18
				{1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0},// 19
				{0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0},// 20
				{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},// 21
				{0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0},// 22
				{1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0},// 23
				{1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0},// 24
				{0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1},// 25
				{1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0},// 26
				{0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1},// 27
				{1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0},// 28
				{0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},// 29
				{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},// 30
				{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},// 31
				{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},// 32
				{0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1},// 33
				{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1},// 34
				{1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1},// 35
				{0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1},// 36
				{1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1},// 37
				{0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0},// 38
				{1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0},// 39
				{0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0},// 40
				{1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1},// 41
				{0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0},// 42
				{1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1},// 43
				{1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0},// 44
				{0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1},// 45
		};
		if (iAge < 18 || iAge > 45) {
			return null;
		}
		int[] result = new int[12];
		for (int i = 0; i < 12; i++) {
			result[i] = iResultTable[iAge - 18][i];
		}
		return result;
	}
}


 


下邊這個是C版的

 

uint8 GetBabyResult(int32 iAge , int32 iMonth)
{	 
	uint8 iResultTable[28][12] = {      
		{0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x01, 0x01, 0x01, 0x01,0x01, 0x01},// 18
		{0x01, 0x00, 0x01, 0x00, 0x00,0x01, 0x01, 0x01, 0x01, 0x01,0x00, 0x00},// 19
		{0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x01, 0x01, 0x01, 0x00,0x01, 0x00},// 20
		{0x01, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00},// 21
		{0x00, 0x01, 0x01, 0x00, 0x01,0x00, 0x00, 0x01, 0x00, 0x00,0x00, 0x00},// 22
		{0x01, 0x01, 0x00, 0x01, 0x01,0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x00},// 23
		{0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x01, 0x00, 0x00, 0x00,0x00, 0x00},// 24
		{0x00, 0x01, 0x01, 0x00, 0x00,0x01, 0x00, 0x01, 0x01, 0x01,0x01, 0x01},// 25
		{0x01, 0x00, 0x01, 0x00, 0x00,0x01, 0x01, 0x01, 0x00, 0x00,0x00, 0x00},// 26
		{0x00, 0x01, 0x00, 0x01, 0x00,0x00, 0x01, 0x01, 0x01, 0x01,0x00, 0x01},// 27
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x01, 0x01, 0x01, 0x01,0x00, 0x00},// 28
		{0x00, 0x01, 0x00, 0x00, 0x01,0x01, 0x01, 0x01, 0x01, 0x00,0x00, 0x00},// 29
		{0x01, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x01, 0x01},// 30
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x01},// 31
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x01},// 32
		{0x00, 0x01, 0x00, 0x01, 0x00,0x00, 0x00, 0x01, 0x00, 0x00,0x00, 0x01},// 33
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x01, 0x01},// 34
		{0x01, 0x01, 0x00, 0x01, 0x00,0x00, 0x00, 0x01, 0x00, 0x00,0x01, 0x01},// 35
		{0x00, 0x01, 0x01, 0x00, 0x01,0x00, 0x00, 0x00, 0x01, 0x01,0x01, 0x01},// 36
		{0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x01},// 37
		{0x00, 0x01, 0x00, 0x01, 0x01,0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x00},// 38
		{0x01, 0x01, 0x01, 0x01, 0x01,0x00, 0x00, 0x01, 0x00, 0x01,0x00, 0x00},// 39
		{0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x01, 0x00, 0x01, 0x00,0x01, 0x00},// 40
		{0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x01, 0x01, 0x00, 0x01,0x00, 0x01},// 41
		{0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x00},// 42
		{0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x01},// 43
		{0x01, 0x01, 0x00, 0x01, 0x01,0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x00},// 44
		{0x00, 0x01, 0x01, 0x00, 0x00,0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x01},// 45
	};
	if (iAge<18 || iAge>45 || iMonth<1 || iMonth >12)
	{
		return 2;
	}
	return iResultTable[iAge-18][iMonth-1];
}

uint8 GetBabyResultFromAge(int32 iAge,uint8 result[12])
{	 
	uint8 i;
	uint8 iResultTable[28][12] = {      
		{0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x01, 0x01, 0x01, 0x01,0x01, 0x01},// 18
		{0x01, 0x00, 0x01, 0x00, 0x00,0x01, 0x01, 0x01, 0x01, 0x01,0x00, 0x00},// 19
		{0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x01, 0x01, 0x01, 0x00,0x01, 0x00},// 20
		{0x01, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00},// 21
		{0x00, 0x01, 0x01, 0x00, 0x01,0x00, 0x00, 0x01, 0x00, 0x00,0x00, 0x00},// 22
		{0x01, 0x01, 0x00, 0x01, 0x01,0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x00},// 23
		{0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x01, 0x00, 0x00, 0x00,0x00, 0x00},// 24
		{0x00, 0x01, 0x01, 0x00, 0x00,0x01, 0x00, 0x01, 0x01, 0x01,0x01, 0x01},// 25
		{0x01, 0x00, 0x01, 0x00, 0x00,0x01, 0x01, 0x01, 0x00, 0x00,0x00, 0x00},// 26
		{0x00, 0x01, 0x00, 0x01, 0x00,0x00, 0x01, 0x01, 0x01, 0x01,0x00, 0x01},// 27
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x01, 0x01, 0x01, 0x01,0x00, 0x00},// 28
		{0x00, 0x01, 0x00, 0x00, 0x01,0x01, 0x01, 0x01, 0x01, 0x00,0x00, 0x00},// 29
		{0x01, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x01, 0x01},// 30
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x01},// 31
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x01},// 32
		{0x00, 0x01, 0x00, 0x01, 0x00,0x00, 0x00, 0x01, 0x00, 0x00,0x00, 0x01},// 33
		{0x01, 0x00, 0x01, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00,0x01, 0x01},// 34
		{0x01, 0x01, 0x00, 0x01, 0x00,0x00, 0x00, 0x01, 0x00, 0x00,0x01, 0x01},// 35
		{0x00, 0x01, 0x01, 0x00, 0x01,0x00, 0x00, 0x00, 0x01, 0x01,0x01, 0x01},// 36
		{0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x01},// 37
		{0x00, 0x01, 0x00, 0x01, 0x01,0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x00},// 38
		{0x01, 0x01, 0x01, 0x01, 0x01,0x00, 0x00, 0x01, 0x00, 0x01,0x00, 0x00},// 39
		{0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x01, 0x00, 0x01, 0x00,0x01, 0x00},// 40
		{0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x01, 0x01, 0x00, 0x01,0x00, 0x01},// 41
		{0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x00},// 42
		{0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x01, 0x00, 0x01, 0x01,0x01, 0x01},// 43
		{0x01, 0x01, 0x00, 0x01, 0x01,0x01, 0x00, 0x01, 0x00, 0x01,0x00, 0x00},// 44
		{0x00, 0x01, 0x01, 0x00, 0x00,0x00, 0x01, 0x00, 0x01, 0x00,0x01, 0x01},// 45
	};
	if (iAge<18 || iAge>45)
	{
		return 2;
	}
	for (i=0;i<12;i++)
	{
		result[i]=iResultTable[iAge-18][i];
	}	
	return 1;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章