JAVA学习和应用,刷题,cf
创始人
2025-06-01 02:45:06
0

目录

Java

枚举

IO流 

File类 

文件字节流

文件字符流

缓冲流

vju

cf


Java

枚举

普通写法代码如下:

public  class EM {private  final String S_NAME;private final String S_DESC;private static EM spring=new EM("春天","桃花");private static EM summer=new EM("夏天","水稻");private static EM autumn=new EM("秋天","橙子");private static EM winter=new EM("冬天","雪花");private  EM (String name,String desc){this.S_NAME=name;this.S_DESC=desc;System.out.println(this.S_NAME+","+this.S_DESC);}public static void main(String[] args) {EM.getSpring();EM.getSummer();EM.getAutumn();EM.getWinter();}public static EM getWinter() {return winter;}public static EM getAutumn() {return autumn;}public static EM getSummer() {return summer;}public static EM getSpring() {return spring;}
}

 

枚举写代码如下:
 

public class EM {public static void main(String[] args) {Season spring = Season.SPRING;spring.showInfo();///Season summer = Season.SPRING;}
}
enum Season{SPRING("春天","桃花"),SUMMER("夏天","西瓜"),AUTUMN("秋天","橙子"),WINTER("冬天","雪花");private final String name;private final String desc;private Season(String name,String desc){this.name=name;this.desc=desc;}public void showInfo(){System.out.println(this.name+":"+this.desc);}
}

 总结:两者比较之下,枚举写的肯定是要简约点的。

IO流 

 

File类 

递归遍历文件

 代码如下:

public class Main {public static void main(String[] args) {System.out.println("D:\\IDEA\\java11\\tt.txt");}
}

 注意:斜杠打两条,一条斜杠是转义字符。

代码如下:

import java.io.File;public class Main {public static void main(String[] args) {//System.out.println("D:\\IDEA\\java11\\tt.txt");//使用递归遍历文件File f=new File("D:\\IDEA\\java11\\test1");new Main().test(f);}public void test(File file){if(file.isFile()){System.out.println(file.getAbsolutePath()+"是文件");}else {System.out.println(file.getAbsolutePath()+"是文件夹");File[] fs=file.listFiles();if(fs!=null&&fs.length>0){for(File ff:fs){test(ff);//递归}}}}
}

 运行结果:

文件字节流

输入流

代码示例如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Main {public static void main(String[] args){try{FileInputStream in=new FileInputStream("D:\\IDEA\\java11\\tt.txt");byte[] b=new byte[1024];int len=0;while ((len=in.read(b))!=-1){System.out.println(new String(b,0,len));}in.close();} catch (Exception e) {e.printStackTrace();}}
}

运行结果如下:

 注意:流在使用之后一定要关闭。

输出流

import java.io.*;public class Main {public static void main(String[] args){try{FileOutputStream out=new FileOutputStream("D:\\IDEA\\java11\\tt1.txt");String str="dfvkndbkvfbdkggfjk";out.write(str.getBytes());out.flush();out.close();} catch (FileNotFoundException ex) {throw new RuntimeException(ex);} catch (IOException ex) {throw new RuntimeException(ex);}}}

结果:

练习

代码如下:

import java.io.*;public class Main {public static void main(String[] args) {Main.copyFile();}public static void copyFile() {try {FileInputStream in=new FileInputStream("D:\\IDEA\\java11\\tt.txt");FileOutputStream out=new FileOutputStream("D:\\IDEA\\java11\\tt2.txt");byte[]b=new byte[100];int len=0;while((len=in.read(b))!=-1){out.write(b,0,len);}out.flush();out.close();in.close();}catch (Exception e) {throw new RuntimeException(e);}}
}

 结果如下:

文件字符流

输入流

示例如下:

import java.io.FileReader;public class Test2 {public static void main(String[] args){Test2.hdFile("D:\\IDEA\\java11\\tt.txt");}public static void hdFile(String inPath){try {FileReader fr=new FileReader(inPath);char [] c=new char[10];int len=0;while((len=fr.read(c))!=-1){System.out.println(new String(c,0,len));}fr.close();}catch (Exception e) {throw new RuntimeException(e);}}
}

 结果如下:

输出流

示例如下:

import java.io.FileReader;
import java.io.FileWriter;public class Test2 {public static void main(String[] args){Test2.hdFile("D:\\IDEA\\java11\\tt.txt");Test2.scFile("wcb","D:\\IDEA\\java11\\tt3.txt");}public static void scFile(String text,String outPath){try{FileWriter fw=new FileWriter(outPath);fw.write(text);fw.flush();fw.close();}catch (Exception e) {throw new RuntimeException(e);}}
}

结果:

缓冲流

它主要是为了提高速度,有点像高速缓存。

 示例如下(有抛出异常和捕获异常):

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;public class Test2 {public static void main(String[] args){try {Test2.hcsr( );} catch (Exception e) {throw new RuntimeException(e);}}public static void hcsr() throws Exception{FileInputStream in=new FileInputStream("D:\\IDEA\\java11\\tt3.txt");BufferedInputStream br=new BufferedInputStream(in);byte[] b=new byte[10];int len=0;while ((len=br.read(b))!=-1){System.out.println(new String(b,0,len));}br.close();in.close();}
}

结果:

 java小总结:其实因为有C语言的基础,就目前来讲java学起来不是很困难,主要还是要注意一下与C语言的不同,注意一些语法什么的,还有就是那些类和方法什么的,它给在里面了,得会用能用,所以记忆和复盘还是重点,等看完java之后就去重点看一下java的重点知识,然后去看mysql和maven,快点学完然后一边复盘学习一边写项目设计思路,然后写项目。

vju

简单搜索&&进阶搜索 - Virtual Judge

分析:

这个题目吧,不难,但是容易时间超限,所以剪枝操作一定要做好,不然就嘎嘎时间超限。唉,,,说多了都是泪

剪枝操作主要是下面三个:

1,如果当前搜索到的最小表面积已经大于了已知的最小表面积直接退出

2,如果当前搜索到的体积已经超过题目限制则退出

3,如果由体积推出来当前的表面积已经不优直接退出

从下往上搜,每次枚举采取块大的先枚举,这样方案数少,假设当前体积为v,总体积为n , 剩余体积 n-v,圆柱体积为 r*r*h,若要使 r 尽可能大,则令h=1即可,r <= sqrt(n-v),当r确定了后, h = (n-v)/(r*r)。

代码如下:

#include
#include
#include
int n,m;
int min=1e9+7;
void dfs(int n1,int r,int h,int a,int v)
{if(v>n||n1>m||a>min)return;if(n1==m&&v==n){min=a;return;}if (v+(h*r*r)*(m-n1) <= n)//剪枝,不然就会时间超限return;for(int h1=h-1;h1>=m-n1;h1--){for(int r1=r-1;r1>=m-n1;r1--){dfs(n1+1,r1,h1,a+2*r1*h1,v+r1*r1*h1);}}
}int main()
{scanf("%d",&n);scanf("%d",&m);for (int h=n/(m*m);h>=m;h--) {for (int r=sqrt(n/m);r>=m;r--){dfs(1,r,h,r*r+2*r*h,h*r*r);}}if(min==1e9+7)printf("0");else printf("%d",min);
}

简单搜索&&进阶搜索 - Virtual Judge

分析:

其实我这个代码是写得相当臃肿的,这个题好一点的方法应该是使用双向广搜,我没有用双向广搜,我用了两次广搜,然后记录下他们的位置,到每个点上需要的时间,然后再讲这个时间加起来比较,但是!!!!注意一个点,一定要注意

我当时就是这里没有注意到,然后一直错,不是只比较kfc那个位置上两个步数之和的最小值就行,你还要判断他们是不是都走到过这家kfc。 

代码如下:

#include
#include
#include
int m,n;
int a[2][201][201],xx,yy,k;
char c[201][201],cc;
int b[201][201];
int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}};struct fff
{int x;int y;int s;
}map[201*201];void cz(char ccc)
{for(int i=0;i=n||ny<0||ny>=m||b[nx][ny]||c[nx][ny]=='#')continue;b[nx][ny]=1;map[tail].x=nx;map[tail].y=ny;map[tail].s=map[head].s+1;a[k][nx][ny]=map[tail].s;tail++;}head++;}
}void minn()
{int min=400000;for(int i=0;i

简单搜索&&进阶搜索 - Virtual Judge

分析:

这个题目没有什么要特别注意的点就是自己要想明白读懂题意,然后就是一直的搜索加比较,用深搜就行。

#include
#include
#include
int n;
int a[16][16],b[16];
int sum;void dfs(int h,int l,int sj)
{for(int i=0;il?sum:l;
}int main()
{while(scanf("%d",&n)!=EOF){for(int i=0;i

cf

上场的cf,我做出来了的题目都没有什么需要注意的点,只是还是要注意一个时间复杂度,然后数组什么的开大点,但是这两天还没有来得及补题,所以还不是很知道后面的题目会怎么样,明天应该可以把cf和atc的题目补一半,然后再想一下蚂蚁过桥的问题和思维版奶牛翻块问题。

相关内容

热门资讯

还得加钱!利物浦报价维尔茨再遭... 北京时间6月2日消息,据德国媒体报道称,利物浦求购维尔茨的第二份报价遭到勒沃库森拒绝,药厂坚持要价1...
罗马诺:欧冠决赛的0-5惨败,... 直播吧6月2日讯 欧冠决赛,国际米兰0-5完败巴黎圣日耳曼,无缘冠军。据转会名记罗马诺透露,本场失利...
刚刚!港股下挫,A50跌超2%... 每经编辑|何小桃 受全球关税负面信息的打击,6月2日上午,亚太股市几乎全线下跌。 截至发稿,恒生...
原创 权... 作者:吕东平 摘要 在全球化与文明对话日益深入的今天,某些国家仍呈现出权力结构对法治原则的系统性侵...
分手后男子起诉按现金价折算金饰... 近日,宁夏同心县人民法院公布一起案例,2024年9月,宝某与周某经人介绍相识并按照习俗结婚,宝某依习...
连连数字盘中一度涨超78% 香... 连连数字(02598)盘中一度涨超78% ,高见18港元,股价创新高,截至发稿,股价上涨65.47%...
官员饮酒聚餐致死,安徽:绝不姑... 据《安徽日报》报道,6月1日晚,安徽省委常委会召开会议,传达学习中央层面深入贯彻中央八项规定精神学习...
3名干部被查,均已退休,年龄最... 原江西省工业和信息化委员会党组成员、副主任杨人平被查 据江西省纪委监委5月30日消息:原江西省工业和...
曼联门神奥纳纳爆转会!沙特土豪... 各位球迷朋友们,转会市场这潭水啊,是越来越深,越来越浑!今儿个咱聊聊曼联的门神——安德烈·奥纳纳。这...
女子搬新家遭邻居多次持刀砍门,... 极目新闻记者 王柳钦 近日,有辽宁大连的网友发视频称,疑似患精神疾病的邻居多次持刀上门,用刀砍其家门...