NC18
题目链接:NC18
题意、输入、输出:
分析:模拟,从将开始或者其他棋子判断都行
思路:无
代码:
import java.util.*;
public class Solution {
/**
*
* @param chessboard string字符串一维数组
* @return string字符串
*/
public String playchess (String[] chessboard) {
// write code here
String[] ch=chessboard;
String ans1="Happy";
String ans2="Sad";
for(int i=0;i<ch.length;i++){
for(int j=0;j<ch[i].length();j++){
if(ch[i].charAt(j)=='.')continue;
switch(ch[i].charAt(j)){
case 'P':
int cnt=0;
for(int k=i+1;k<ch.length;k++){
if(ch[k].charAt(j)=='j'&&cnt==1)return ans1;
if(ch[k].charAt(j)!='.')cnt++;
if(cnt==2)break;
}
cnt=0;
for(int k=i-1;k>=0;k--){
if(ch[k].charAt(j)=='j'&&cnt==1)return ans1;
if(ch[k].charAt(j)!='.')cnt++;
if(cnt==2)break;
}
cnt=0;
for(int k=j+1;k<ch[i].length();k++){
if(ch[i].charAt(k)=='j'&&cnt==1)return ans1;
if(ch[i].charAt(k)!='.')cnt++;
if(cnt==2)break;
}
cnt=0;
for(int k=j-1;k>=0;k--){
if(ch[i].charAt(k)=='j'&&cnt==1)return ans1;
if(ch[i].charAt(k)!='.')cnt++;
if(cnt==2)break;
}
break;
case 'C':
for(int k=i+1;k<ch.length;k++){
if(ch[k].charAt(j)!='.'){
if(ch[k].charAt(j)=='j')return ans1;
else break;
}
}
for(int k=i-1;k>=0;k--){
if(ch[k].charAt(j)!='.'){
if(ch[k].charAt(j)=='j')return ans1;
else break;
}
}
for(int k=j+1;k<ch[i].length();k++){
if(ch[i].charAt(k)!='.'){
if(ch[i].charAt(k)=='j')return ans1;
else break;
}
}
for(int k=j-1;k>=0;k--){
if(ch[i].charAt(k)!='.'){
if(ch[i].charAt(k)=='j')return ans1;
else break;
}
}
break;
case 'B':
if(i+1<ch.length&&ch[i+1].charAt(j)=='j'
||i-1>=0&&ch[i-1].charAt(j)=='j'
||j+1<ch[i].length()&&ch[i].charAt(j+1)=='j'
||j-1>=0&&ch[i].charAt(j-1)=='j')return ans1;
break;
case 'J':
if(i+1<ch.length&&ch[i+1].charAt(j)=='j'
||i-1>=0&&ch[i-1].charAt(j)=='j'
||j+1<ch[i].length()&&ch[i].charAt(j+1)=='j'
||j-1>=0&&ch[i].charAt(j-1)=='j')return ans1;
}
}
}
return ans2;
}
}
NC12
题目链接:NC12
题意、输入、输出:
分析:从后往前递推,但取余数我想不明白,
思路:递推(说是dp,但dp就是浪费实干)
代码:
import java.util.*;
public class Solution {
/**
*
* @param n int整型 只剩下一只蛋糕的时候是在第n天发生的.
* @return int整型
*/
static int[] dp=new int[30];
static {
dp[0]=1;
}
public int cakeNumber (int n) {
// write code here\
if(dp[n-1]!=0)return dp[n-1];
for(int i=1;i<n;i++){
if(dp[i]!=0)continue;
dp[i]=(dp[i-1]+1)*3/2;
}
return dp[n-1];
}
}