红色病毒 杭电ACM Java

/**

 * 

 * 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,

 * 被称为"红色病毒",经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶,腺嘧啶均是成对出现的。

 *

 * 现在有一长度为N的字符串,满足一下条件:

 * (1) 字符串仅由A,B,C,D四个字母组成;

 * (2) A出现偶数次(也可以不出现);

 * (3) C出现偶数次(也可以不出现);

 * 计算满足条件的字符串个数.

 * 当N=2时,所有满足条件的字符串有如下6个:BB,BD,DB,DD,AA,CC.

 * 由于这个数据肯能非常庞大,你只要给出最后两位数字即可.

 *

 */

public class HongVirus {

static String[] strABCD={"A","B","C","D"};

static String[] strBD={"B","D"};

static int time=0;

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

int n=input.nextInt();

input.close();

String[] str=new String[n];

computer(str, 0);

System.out.println(time);

}

public static void computer(String[] str,int t)

{

if(t>=str.length)

{

if(isOk(str))

{

time=(time+1)%100;

// pri(str);

}

return;

}

for (int i = 0; i < strABCD.length; i++) {

str[t]=strABCD[i];

computer(str, t+1);

}


}

public static boolean isOk(String[] str)

{

int iA=0;

int iC=0;

for (int i = 0; i < str.length; i++) {

if("A".equals(str[i]))

{

iA++;

}else if("C".equals(str[i]))

{

iC++;

}

}

if((iA%2==0)&&(iC%2==0))

{

return true;

}

return false;

}

// public static void pri(String[] str)

// {

// for (int i = 0; i < str.length; i++) {

// System.out.print(str[i]+"\t");

// }

// System.out.println();

// }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值