新聞中心
【急】請問三道題目用java怎么做
package reptile;
成都創(chuàng)新互聯(lián)公司-專業(yè)網站定制、快速模板網站建設、高性價比哈爾濱網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式哈爾濱網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋哈爾濱地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
import java.util.Scanner;
public class TestMultiplyDemo
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
int n;
System.out.println("請輸入魔方單行或者單列的值");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
System.out.println("請輸入魔方的每個位置的數(shù)值 以空格隔開");
sc = new Scanner(System.in);
String string = sc.nextLine();
int[][] m = new int[n][n];
System.out.println(string + "!!!!");
String[] strings = string.split(" ");
System.out.println(strings.length);
int k = 0;
boolean flag = true;
int minsum = (1 + n*n)*n/2;
for(int i = 0; i n; i++){
int rowSum = 0;
for(int j = 0; j n; j++){
m[i][j] = Integer.parseInt(strings[k]);
k++;
rowSum += m[i][j];
}
if(rowSum != minsum){
flag = false;
}
if(!flag){
break;
}
}
for(int i = 0; i n; i++){
int lineSum = 0;
for(int j = 0; j n; j++){
//m[i][j] = Integer.parseInt(strings[k]);
k++;
lineSum += m[j][i];
}
if(lineSum != minsum){
flag = false;
}
if(!flag){
break;
}
}
int X1Sum = 0;
int X2Sum = 0;
for(int i = 0; i n; i++){
for(int j = 0; j n; j++){
//m[i][j] = Integer.parseInt(strings[k]);
k++;
if(i == j){
X1Sum += m[j][i];
}
if(i + j == n -1){
X2Sum += m[j][i];
}
}
}
if(X1Sum != minsum || X2Sum != minsum){
flag = false;
}
if(flag){
System.out.println("這個正方形是魔方陣");
}else{
System.out.println("這個正方向不是魔方陣");
}
}
}
魔方先提交了 我覺得這個最難
package reptile;
import java.text.DecimalFormat;
import java.util.Scanner;
public class TestGradeAdd
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
DecimalFormat df = new DecimalFormat("######0.00");
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你 要輸入個加數(shù)個數(shù)");
int n = sc.nextInt();
int[] m = new int[n];
double sum = 0;
for(int i = 0; i n; i++){
m[i] = sc.nextInt();
System.out.println("輸入" + m[i]);
double temp = getResult(m[i]);
df.format(temp);
sum += temp;
}
System.out.println("最后的結果是" + sum);
}
public static double getResult(int n){
double sum = 0;
for(int i = 1; i = n;i++){
double temp = 1.0/i;
sum +=temp;
}
return sum;
}
}
編java程序求解n階魔方矩陣代碼
import java.util.Scanner;
public class Matrix {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("請輸入n*n數(shù)組,n=");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] a = new int[n][n];//定義n*n數(shù)組
int result = 0;
for(int i=0; in; i++){
for(int j=0; jn; j++){
System.out.println("請輸入第"+i+"行,第"+j+"列元素:");
a[i][j]=sc.nextInt();
}
result +=a[i][i];
}
System.out.println("對角線元素和為:"+result);
}
}
魔方矩陣的Java版的魔方矩陣算法
/***魔術矩陣,也被稱為魔方矩陣。目前魔術矩陣主要有三種結構:N為奇數(shù)、N為4的倍數(shù)、N為其它偶數(shù)(4n+2)。br/*其中目前很多數(shù)學家都還在研究“N為4的倍數(shù)”、“N為其它偶數(shù)(4n+2)”,可見它們對于初學者而言太難。br/*因此此處演示的代碼,僅僅考慮N為奇數(shù)的情況。br/*此代碼作為課件提供給學生參考,在學完數(shù)組、循環(huán)、判斷后練習。br/*@authorluo_wenqiang在126點com*@version1.0.0*/classMagicArray{publicstaticvoidmain(String[]args){/*1.把1放在第一行的最中間2.每個數(shù)字向右上角填充3.如果往右已經是最大數(shù)了,就從最左邊重新繼續(xù)4.如果往上已經是最大數(shù)了,就從最下邊重新繼續(xù)5.如果遇到行數(shù)的整數(shù)倍,則下一個數(shù)直接放到該數(shù)的下面*//*1.聲明一個n*n二維數(shù)組2.聲明一個int類型的變量記錄每個元素遞增的值,每次自加即可3.需要一個嵌套循環(huán)來填充二維數(shù)組3.1.把橫向的索引認為x,x=n/23.2.把縱向的所應認為y,y=03.3.在循環(huán)中,先把x、y坐標上的值填充,然后計算下一個坐標*/intn=3;int[][]array=newint[n][n];intcounter=1;//自加的計數(shù)器intx=n/2;inty=0;//二維數(shù)組,需要用兩層的嵌套循環(huán)來完成比較簡單for(inti=0;in*n;i++){//根據坐標填充值array[y][x]=counter;//計算下一個坐標的位置if(counter%n==0){//如果counter是n的整數(shù)倍,下一個坐標是在當前數(shù)字的下面y++;}else{x++;y--;if(y0){//如果y超出范圍,把y設置成最大y=n-1;}if(x==n){//如果x超出范圍,把x設置成最小x=0;}}//使用完以后計數(shù)器需要自加counter++;}for(int[]row:array){for(inti:row){System.out.print(i);System.out.print(\t);}System.out.println();}}}
幻方java,這個編程哪里有問題,為什么判斷不出來
public class Magic {
private int n;
private int[][] I;
private int[][] J;
public Magic(int n) {
this.n = n;
}
public int[][] getMagic(){
int[][] M=null;
if(n=2)return M;
if(n%2==1){
meshGrid();
M=new int[n][n];
for(int i=0;in;i++)
for(int j=0;jn;j++){
int a=mod(I[i][j]+J[i][j]-(n+3)/2,n);
int b=mod(I[i][j]+2*J[i][j]-2,n);
M[i][j]=n*a+b+1;
}
}
else if(n%4==0){
meshGrid();
M=reshape();
for(int i=0;in;i++)
for(int j=0;jn;j++){
int a=(int)Math.floor(mod(I[i][j],4)/2.0);
int b=(int)Math.floor(mod(J[i][j],4)/2.0);
if(a==b){
M[i][j]=n*n+1-M[i][j];
}
}
}
else{
int p=n/2;
Magic magic=new Magic(p);
int[][] temp=magic.getMagic();
M=new int[n][n];
for(int i=0;ip;i++){
for(int j=0;jp;j++){
M[i][j]=temp[i][j];
M[i][j+p]=temp[i][j]+2*p*p;
M[i+p][j]=temp[i][j]+3*p*p;
M[i+p][j+p]=temp[i][j]+p*p;
}
}
int k=(n-2)/4;
for(int j=0;jk;j++){
for(int i=0;ip;i++){
int t=M[i][j];
M[i][j]=M[i+p][j];
M[i+p][j]=t;
}
}
for(int j=n-k+1;jn;j++){
for(int i=0;ip;i++){
int t=M[i][j];
M[i][j]=M[i+p][j];
M[i+p][j]=t;
}
}
int t=M[k][0];M[k][0]=M[k+p][0];M[k+p][0]=t;
t=M[k][k];M[k][k]=M[k+p][k];M[k+p][k]=t;
}
return M;
}
private void meshGrid(){
if(n2){
I=new int[n][n];
J=new int[n][n];
for(int i=0;in;i++)
for(int j=0;jn;j++){
I[i][j]=i+1;
J[i][j]=j+1;
}
}
}
private int[][] reshape(){
if(n2){
int[][] M=new int[n][n];
for(int i=0;in;i++)
for(int j=0;jn;j++){
M[i][j]=i*n+j+1;
}
return M;
}
return null;
}
private int mod(int a,int n){
int m=a%n;
if(m0)
m+=n;
return m;
}
public void printMagic(){
this.getMagic();
int[][] a=this.getMagic();
for(int i=0;ia.length;i++){
for(int j=0;ja[i].length;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
}
求程序代碼?打印魔方陣,所謂的魔方陣是nxn方針,其中n為奇數(shù),它由nxn個正整數(shù)組成,它的每一行,每一列
轉的:
下面是兩種方法的代碼:
#include stdio.h
void main()
{
int a[16][16];
int i,j,k,p,m,n;
/*初始化*/
p=1;
while(p==1)
{
printf("請輸入n.(0n=15,n是奇數(shù))\n");
scanf("%d",n);
if((n!=0)(n=15)(n%2!=0))
{
printf("矩陣階數(shù)是:%d\n",n);
p=0;
}
for(i=1;i=n;i++)
for(j=1;j=n;j++)
a[i][j]=0;
}
/*建立魔方陣*/
j=n/2+1;
a[1][j]=1;
for(k=2;k=n*n;k++)
{
i=i-1;
j=j+1;
if((i1)(jn))
{
i=i+2;
j=j-1;
}
else
{
if(i1) i=n;
if(jn) j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
/*輸出*/
for(i=1;i=n;i++)
{
for(j=1;j=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
#include stdio.h
int i,j,n,a[16][16]; /*全局定義方陣行、列、階數(shù)以及最大方陣容量*/
void creat() /*建立魔方陣*/
{
int k;
j=n/2+1;
a[1][j]=1;
for(k=2;k=n*n;k++)
{
i=i-1;
j=j+1;
if((i1)(jn))
{
i=i+2;
j=j-1;
}
else
{
if(i1) i=n;
if(jn) j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
}
void print() /*輸出魔方陣*/
{
for(i=1;i=n;i++)
{
for(j=1;j=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
void main()
{
int k,p,m;
while(1)
{
p=1;
while(p==1)
{
printf("請輸入n(0n=15,n是奇數(shù))\n");
scanf("%d",n);
if((n!=0)(n=15)(n%2!=0))
{
printf("矩陣階數(shù)是:%d\n",n);
p=0;
}
for(i=1;i=n;i++)
for(j=1;j=n;j++)
a[i][j]=0;
}
creat();
print();
}
}
關于Java基礎編程的一個問題--回形魔方陣
//完成了,請樓主測試吧~~~ 這個就是模擬矩陣旋轉的問題
public class TTT {
public static void main(String[] args){
//RC就是行列數(shù),試試5 6 7 10等數(shù)值,都能正確輸出,呵呵~~
int rc = 4;
int[][] dat = new int[rc][rc];
int count = 0;
//初始化數(shù)據
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
dat[i][j]=-1;
}
}
while(notFinished(dat,rc)){
for(int i=0; irc; i++){
int jj = -1;//存放未被填充數(shù)據的行
for(int j=0; jrc; j++){
if(dat[j][i]==-1){
jj = j;break;
}
}
//找到了未填充的行在這里處理
if(jj-1){
while(irc dat[jj][i]==-1){
dat[jj][i++]=++count;
}
dat = rotate(dat,rc);
}
}
}
//這里是修正起始位置的
if(rc%2==1){
for(int i=0; i3; i++)
dat = rotate(dat,rc);
}
else{
dat = rotate(dat,rc);
}
//打印結果
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
System.out.print(dat[i][j]+"\t");
}
System.out.println("\n");
}
}
//對臨時結果做逆時針90度旋轉
private static int[][] rotate(int[][] dat,int rc){
int[][] tmp = new int[rc][rc];
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
int t = dat[i][j];
tmp[rc-j-1][i]=t;
}
}
return tmp;
}
private static boolean notFinished(int[][] dat,int rc) {
for(int i=0; irc; i++){
for(int j=0; jrc; j++)
if(dat[i][j]==-1)
return true;
}
return false;
}
}
當前標題:魔方陣java代碼,魔方 代碼
網頁URL:http://ef60e0e.cn/article/hcpscd.html