導航:首頁 > 源碼編譯 > java常見演算法題

java常見演算法題

發布時間:2022-11-13 01:21:16

㈠ 關於java演算法編程的問題,輸入成績,判斷每門課得分的范圍是否合理,輸入時候用空格分割,

一、題目分析:
要計算每個學生的平均成績,需要獲取如下信息:
1、學生總數;
2、科目數;
3、每個學生每科的成績。
然後累加每個學生的總分,並計算總成績。
二、演算法設計:
1、輸入學生總數;
2、輸入科目數;
3、對於每個學生,輸入各科成績,計算總分及平均分,保存平均分值。
4、輸出結果。
三、參考代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, m;
float *p;
int i,j;
scanf("%d%d",&n,&m);//輸入學生總數n和學科總數m。
p = (float *)malloc(sizeof(float)*n);//申請空間以存儲平均分。
for(i = 0; i < n; i ++)
{
p[i] = 0;//初始為0.
for(j = 0; j < m; j ++)//輸入每個學生每科成績。
{
float t;
scanf("%f",&t);
p[i]+=t;//累加獲得總分。
}
p[i]/=m;//計算平均分。
}
for(i = 0; i < n; i ++)//輸出結果。
printf("%f\n", p[i]);
free(p);//釋放內存。
return 0;
}

㈡ java 演算法題:將下面的字元串按規則拆開,保存進list集合中

用String類的split函數先按中文逗號切分,再按"#"切分,就可以把此字元串前面的字母保存在集合a中,將後面的文字保存在集合b中。具體的Java程序如下:

importjava.util.ArrayList;
importjava.util.List;
publicclassCC{
publicstaticvoidmain(String[]args){
Strings="yw#語文,ss#數學,yy#英語,ty#體育";
List<String>a=newArrayList<String>();
List<String>b=newArrayList<String>();
String[]s1=s.split(",");
for(Stringtmp:s1){
String[]s2=tmp.split("#");
a.add(s2[0]);
b.add(s2[1]);
}
for(inti=0;i<a.size();i++)
System.out.print(a.get(i)+"");
System.out.println();
for(inti=0;i<b.size();i++)
System.out.print(b.get(i)+"");
System.out.println();
}
}

運行結果:

yw ss yy ty
語文 數學 英語 體育

㈢ 這道演算法題該怎麼做java實現

按照題目要求編寫的程序如下(見圖)

㈣ java常見gc演算法有哪些

1:標記—清除
Mark-Sweep
過程:標記可回收對象,進行清除
缺點:標記和清除效率低,清除後會產生內存碎片
2:復制演算法
過程:將內存劃分為相等的兩塊,將存活的對象復制到另一塊內存,把已經使用的內存清理掉
缺點:使用的內存變為了原來的一半
進化:將一塊內存按8:1的比例分為一塊Eden區(80%)和兩塊Survivor區(10%)
每次使用Eden和一塊Survivor,回收時,將存活的對象一次性復制到另一塊Survivor上,如果另一塊Survivor空間不足,則使用分配擔保機制存入老年代
3:標記—整理
Mark—Compact
過程:所有存活的對象向一端移動,然後清除掉邊界以外的內存
4:分代收集演算法
過程:將堆分為新生代和老年代,根據區域特點選用不同的收集演算法,如果新生代朝生夕死,則採用復制演算法,老年代採用標記清除,或標記整理
面試的話說出來這四種足夠了

㈤ Java簡單演算法問題


初步做了一個出來,但是效率並不是很高,前100個計算速度還可以,但是往後就很慢了。如果什麼時候有空的話可以再看看,先給你代碼吧,不知道能不能幫上你

publicclassAlisandaNumber{
privatestaticfinalintMAX_INDEX=1000;//可以先把這個常量改為1-6,驗證正確性
publicstaticvoidmain(String[]args){
inta=0;
intindex=0;
while(index<MAX_INDEX){
a+=6;//每次循環自增6,由題目規律可知A是6的倍數
booleanbreakOut=false;

//最大的約數為此數的平方根,因為如果是兩個平方根相乘的話,剩下的就只有1了
intmaxNum=(int)Math.ceil(Math.sqrt(a));
p:
for(intp=1;p<=maxNum;p++){
if(a%p!=0){
continue;//如果不是約數的話,沒必要考慮,下同
}

//最大約數為平方根的相反數,原理同上
maxNum=(int)Math.ceil(Math.sqrt(a/p));
for(intq=-1;q>=-maxNum;q--){//q和r必為負數
if(a%q!=0){
continue;
}

intr=a/(p*q);
intnonZero=p*q+p*r+q*r;
if(nonZero==0){
continue;
}
if((a==p*q*r)&&(a==(p*q*r)/(nonZero))){
index++;
breakOut=true;
breakp;//跳出外層循環
}
}
}
if(breakOut){
System.out.println(String.format("第%d個壓力山大數是%d",index,a));
}
}
}
}



㈥ 1.java演算法 2.問題如下: 已知圓心坐標(x,y),半徑r,求圓邊上各個角的坐標

publicclassCircle{
classPoint{
publicfloatx,y;
publicPoint(floatx,floaty){
this.x=x;
this.y=y;
}
}
privatestaticfinalfloatPI=3.14f;
privatefloatmPointX,mPointY;
privatefloatmRadius;
publicCircle(floatx,floaty,floatradius){
mPointX=x;
mPointY=y;
mRadius=radius;
}

publicPointcomputeCoordinates(floatangle){
returnnewPoint(mPointX+(float)(mRadius*Math.cos(angle*Math.PI/180)),
mPointY+(float)(mRadius*Math.sin(angle*Math.PI/180)));
}

publicstaticvoidmain(String[]args){
Circleperson=newCircle(1,1,3);
Pointpoint=person.computeCoordinates(60);
System.out.println(point.x+","+point.y);
}
}

㈦ java演算法題

public class Monkey
{
public static void main(String[] args)
{
int sum=0,remain=1;
//每天吃剩的桃子加一個正好是前一天桃子的一半,每天桃子的總數就是前一天剩下桃子的數量
for(int day=9;day>=1;day--)
{
sum=(remain+1)*2;
remain=sum;
System.out.println("第"+day+"天還剩"+remain+"個桃子");
}
System.out.println(sum);
}
}

㈧ java面試有哪些演算法

面試-java演算法題:
1.編寫一個程序,輸入n,求n!(用遞歸的方式實現)。
public static long fac(int n){ if(n<=0) return 0; else if(n==1) return 1; else return n*fac(n-1);
} public static void main(String [] args) {
System.out.println(fac(6));
}
2.編寫一個程序,有1,2,3,4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
public static void main(String [] args) { int i, j, k; int m=0; for(i=1;i<=4;i++) for(j=1;j<=4;j++) for(k=1;k<=4;k++){ if(i!=j&&k!=j&&i!=k){
System.out.println(""+i+j+k);
m++;
}
}
System.out.println("能組成:"+m+"個");
}
3.編寫一個程序,將text1.txt文件中的單詞與text2.txt文件中的單詞交替合並到text3.txt文件中。text1.txt文件中的單詞用回車符分隔,text2.txt文件中用回車或空格進行分隔。
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class text{
public static void main(String[] args) throws Exception{
String[] a = getArrayByFile("text1.txt",new char[]{'\n'});
String[] b = getArrayByFile("text2.txt",new char[]{'\n',' '});
FileWriter c = new FileWriter("text3.txt");
int aIndex=0; int bIndex=0;

while(aIndex<a.length){
c.write(a[aIndex++] + "\n");
if(bIndex<b.length)
c.write(b[bIndex++] + "\n");
}

while(bIndex<b.length){
c.write(b[bIndex++] + "\n");
}
c.close();
}

public static String[] getArrayByFile(String filename,char[] seperators) throws Exception{
File f = new File(filename);
FileReader reader = new FileReader(f);
char[] buf = new char[(int)f.length()];
int len = reader.read(buf);
String results = new String(buf,0,len);
String regex = null;
if(seperators.length >1 ){
regex = "" + seperators[0] + "|" + seperators[1];
}else{
regex = "" + seperators[0];
}
return results.split(regex);
}

}
4.639172每個位數上的數字都是不同的,且平方後所得數字的所有位數都不會出現組成它自身的數字。(639172*639172=408540845584),類似於639172這樣的6位數還有幾個?分別是什麼?
這題採用的HashMap結構判斷有無重復,也可以採用下題的數組判斷。
public void selectNum(){
for(long n = 100000; n <= 999999;n++){
if(isSelfRepeat(n)) //有相同的數字,則跳過
continue;
else if(isPingFangRepeat(n*n,n)){ //該數的平方中是否有與該數相同的數字
continue;
} else{ //符合條件,則列印 System.out.println(n);
}
}
} public boolean isSelfRepeat(long n){
HashMap<Long,String> m=new HashMap<Long,String>(); //存儲的時候判斷有無重復值
while(n!=0){ if(m.containsKey(n%10)){ return true;
} else{
m.put(n%10,"1");
}
n=n/10;
} return false;
} public boolean isPingFangRepeat(long pingfang,long n){
HashMap<Long,String> m=new HashMap<Long,String>(); while(n!=0){
m.put(n%10,"1");
n=n/10;
} while(pingfang!=0){ if(m.containsKey(pingfang%10)){ return true;
}
pingfang=pingfang/10;
} return false;
} public static void main(String args[]){ new test().selectNum();
}
5.比如,968548+968545=321732732它的答案里沒有前面兩個數里的數字,有多少這樣的6位數。
public void selectNum(){
for(int n = 10; n <= 99;n++){
for(int m = 10; m <= 99;m++){ if(isRepeat(n,m)){ continue;
} else{
System.out.println("組合是"+n+","+m);
}
}
}
} public boolean isRepeat(int n,int m){ int[] a={0,0,0,0,0,0,0,0,0,0}; int s=n+m; while(n!=0){
a[n%10]=1;
n=n/10;
} while(m!=0){
a[m%10]=1;
m=m/10;
} while(s!=0){ if(a[s%10]==1){ return true;
}
s=s/10;
} return false;
} public static void main(String args[]){ new test().selectNum();
}
6.給定String,求此字元串的單詞數量。字元串不包括標點,大寫字母。例如 String str="hello world hello hi";單詞數量為3,分別是:hello world hi。
public static void main(String [] args) { int count = 0;
String str="hello world hello hi";
String newStr="";
HashMap<String,String> m=new HashMap<String,String>();
String [] a=str.split(" "); for (int i=0;i<a.length;i++){ if(!m.containsKey(a[i])){
m.put(a[i],"1");
count++;
newStr=newStr+" "+a[i];
}
}
System.out.println("這段短文單詞的個數是:"+count+","+newStr);
}
7.寫出程序運行結果。
public class Test1 { private static void test(int[]arr) { for (int i = 0; i < arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException();
} else {
System.out.print(i);
}
} catch (Exception e) {
System.out.print("a ");
} finally {
System.out.print("b ");
}
}
}
public static void main(String[]args) { try {
test(new int[] {0, 1, 2, 3, 4, 5});
} catch (Exception e) {
System.out.print("c ");
}
}

}
運行結果:a b 1b a b 3b a b 5b
public class Test1 { private static void test(int[]arr) { for (int i = 0; i < arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException();
} else {
System.out.print(i);
}
}
finally {
System.out.print("b ");
}
}
}
public static void main(String[]args) { try {
test(new int[] {0, 1, 2, 3, 4, 5});
} catch (Exception e) {
System.out.print("c ");
}
}

}
運行結果:b c
8.單詞數
統計一篇文章里不同單詞的總數。
Input
有多組數據,每組一行,每組就是一篇小文章。每篇小文章都是由小寫字母和空格組成,沒有標點符號,遇到#時表示輸入結束。
Output
每組值輸出一個整數,其單獨成行,該整數代表一篇文章里不同單詞的總數。
Sample Input
you are my friend
#
Sample Output
4
public static void main(String [] args) {
List<Integer> countList=new ArrayList<Integer>(); int count;
HashMap<String,String> m;
String str; //讀取鍵盤輸入的一行(以回車換行為結束輸入) String[] a;

Scanner in=new Scanner(System.in);
while( !(str=in.nextLine()).equals("#") ){
a=str.split(" ");
m=new HashMap<String,String>();
count = 0; for (int i=0;i<a.length;i++){ if(!m.containsKey(a[i]) && (!a[i].equals(""))){
m.put(a[i],"1");
count++;
}
}
countList.add(count);
}s for(int c:countList)
System.out.println(c);
}

㈨ java題:請使用任意一例排序演算法,對int[] intArr={5,9,1,4,1,2,6,3,8,0,7}進行排序

importstaticjava.lang.System.*;
publicclassProgram{
publicstaticvoidmain(String[]args){
int[]intArr={5,9,1,4,1,2,6,3,8,0,7};
insertSort(intArr);
}

/**
*@paramarray插入排序演算法待排數組
*/
staticvoidinsertSort(int...array){
inti,j,temp;
for(i=1;i<array.length;i++){
if(array[i]<array[i-1]){
temp=array[i];
for(j=i-1;j!=-1&&array[j]>temp;j--){
array[j+1]=array[j];//元素向後挪動
}
array[j+1]=temp;
}
}

for(intitem:array)out.print(item+"");
}
}

㈩ java演算法有哪些分別

您好:

java中的演算法,常見的有:遞歸、迭代、查找、排序(包含冒泡排序、選擇排序、插入排序、快速排序四種) 等,演算法有很多,一般數據結構中涉及到的都可以用java語言實現。

舉幾個例子:

1.遞歸的例子:

不一一舉例,僅供參考!

閱讀全文

與java常見演算法題相關的資料

熱點內容
python正則表達式貪婪模式 瀏覽:646
愛國精神指的是什麼app 瀏覽:408
壽司解壓系列全集視頻 瀏覽:913
物體三維重建演算法 瀏覽:984
fuli直播app哪個好 瀏覽:918
租辦公室用什麼app 瀏覽:106
醫師定期考核刷題app哪個好 瀏覽:338
導出dmp文件命令 瀏覽:288
手機百度網盤怎麼解壓密碼文件 瀏覽:585
索引重新編譯 瀏覽:606
命令與征服4免cd補丁完美版 瀏覽:428
kotlin編譯為native 瀏覽:142
家用編譯機 瀏覽:550
電子加密貨幣最新政策 瀏覽:382
androidcanvas撤銷 瀏覽:271
安卓手機怎麼把圖標全部下移 瀏覽:187
飢荒被伺服器踢出怎麼進 瀏覽:173
c編譯器哪款好 瀏覽:732
快手寶哥發明什麼app 瀏覽:823
張艷玲編譯 瀏覽:68