清宫图 生男生女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;
}

 

    原文作者:九宫图算法
    原文地址: https://blog.csdn.net/lnb333666/article/details/11202023
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞