「acmjava题解」acm题库及答案java
今天给各位分享acmjava题解的知识,其中也会对acm题库及答案java进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、这道ACM题目怎么用JAVA做出来。。主要是输入格式问题:数据格式为YYYY/MM/DD组成,
- 2、ACM2017题 java解法出错 很简单的一道题
- 3、ACM Java 数据读入问题
- 4、用java实现能通过南阳理工学院acm在线测评练习题第二题——括号匹配
这道ACM题目怎么用JAVA做出来。。主要是输入格式问题:数据格式为YYYY/MM/DD组成,
public int getDays(String date){//输入格式要求是用斜杠“/”来分隔年月日
int y = Integer.parseInt(date.substring(0,4));
int m = Integer.parseInt(date.substring(5,date.lastIndexOf("/")));
int d = Integer.parseInt(date.substring(date.lastIndexOf("/")+1));
if(m==1){return d;}
if(m==2){return 31+d;}
int days = 0;
for(int i=1;im;i++){
if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12 ){days += 31;}
else if(i != 2){days += 30;}
else{
if((y%4 == 0 y%100 !=0)|| (y%4==0 y%400 == 0)){days += 29;}
else{days += 28;}
}
}
days += d;
return days;
}
下面是我自测的结果:
ACM2017题 java解法出错 很简单的一道题
问题在于你的s1.nextInt()和s1.nextLine()使用了同一个输入流,所以在读入字符串时s1.nextLine()会把第一行的3读入到第一个字符串,但是由于‘3’已经在nextInt中用过,而你又按了enter,所以系统认为你的第一个串是空串,你应该发现了虽然你应该输入3行,但是实际你的程序只能输入2行字符串,改进方法,在定义s1的语句后加一行,新定义一个输入Scanner s2 = new Scanner(System.in);
然后将后面的String s = s1.nextLine();改为String s = s2.nextLine();
ACM Java 数据读入问题
读入n,建立二维数组new char[n][n]有什么问题啊?
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
int n, k;
Scanner scanner = new Scanner(new File("test.txt"));
n = scanner.nextInt();
while (n != -1) {
k = scanner.nextInt();
scanner.nextLine();
boolean[][] matrix = new boolean[n][n];
for (int i = 0; i n; ++i) {
String s = scanner.nextLine();
for (int j = 0; j n; ++j) {
matrix[i][j] = s.charAt(j) == '#';
}
}
solve(matrix, n, k);
n = scanner.nextInt();
}
}
static void solve(boolean[][] matrix, int n, int k) {
// your algorithm code here
}
}
---------------------------------------------------------
还是不行是什么意思?我的代码我是测试过的,可以正确读入的
matrix[i][j] = s.charAt(j) == '#'的意思是对二维数组赋值,我用的是boolean类型的二维数组,true表示地图上有这个点,false表示没有,每次读入一行,遍历每个字符,如果是井号,那么就对相应的点设为true,否则为false。scanner.nextLine();就是读入一行的意思。你问我为什么这么输入?这个问题我不太明白,不就应该是一行一行读入吗?
求采纳为满意回答。
用java实现能通过南阳理工学院acm在线测评练习题第二题——括号匹配
答案如下哦
#includecstdio
#includecstring
#includestack
using namespace std;
char str[10000 + 11];
int main()
{
int n, i, l;
scanf("%d", n);
while (n--)
{
memset(str, '0', sizeof(str)); //将数组清零
scanf("%s", str);
l = strlen(str);
stackchar stk;
bool ans = true;
for (i = 0; il; i++)
{
if (str[i] == '(' || str[i] == '[') //如果即将被输入的字符是前括号,那就输入吧,就算最后只剩下它自己,那也因为不为空,而No
stk.push(str[i]);
else if (str[i] == ')')//即将输入的字符是后括号,如果此时栈是空的,那这是第一个字符,肯定不行了,直接退出循环吧,唉。
{
if (stk.empty())
{
stk.push(str[i]);
break;
}
else if (stk.top() == '(')//如果此时的栈顶是与它配对的前括号,那么就把栈顶删掉,即将输入的也不用输入了,两个殉情了。
stk.pop();
else
{
ans = false;//其他的任何情况,比如此时栈内已有元素,但是栈顶不和它配对,那就伤心了,别输入了,false,跑吧。
break;
}
}
else if (str[i] == ']')
{
if (stk.empty())
{
stk.push(str[i]);
break;
}
else if (stk.top() == '[')
stk.pop();
else
{
ans = false;
break;
}
}
}
if (!stk.empty()) //栈为空才对,不为空的都是false
ans = false;
if (ans)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}点击打开链接
关于acmjava题解和acm题库及答案java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。