「acmjava题解」acm题库及答案java

博主:adminadmin 2022-11-29 16:01:07 58

今天给各位分享acmjava题解的知识,其中也会对acm题库及答案java进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

这道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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。