導航:首頁 > 源碼編譯 > 基礎演算法設計編輯列印方陣

基礎演算法設計編輯列印方陣

發布時間:2022-07-05 08:47:37

❶ 設計程序列印下列圖形: 1 5,2 8,6,3 10,9,7,4 這種規律,設計一個演算法實現

代碼如下。你自己把它改為通用的子函數吧!
演算法很簡單:先搞定第一列,然後再搞定每一行的剩餘元素。

#include <stdio.h>
#include <alloc.h>

int main(void)
{
int i, j;
int k; //存儲修正值,即偏移量
int n = 20; //需要列印的行數,你可以修改測試本程序
int **a; //存儲動態數組

a = (int **)malloc(n * sizeof(int *)); //分配動態數組
for(i = 0; i < n; i++)
{
a[i] = (int *)malloc(n * sizeof(int));
}

a[0][0] = 0;
for(i = 1, k = n; i < n; i++)
{
a[i][0] = a[i - 1][0] + (k--); //填充二維數組的第一列
}
for(i = 1; i < n; i++)
{
for(j = 1, k = 0; j <= i; j++)
{
a[i][j] = a[i][j - 1] - (n - i) - (k++); //填充二維數組的每一行的(斜三角部分的)剩餘位置
}
}

for(i = 0; i < n; i++)
{
for(j = 0; j <= i; j++)
{
printf("%-4d", a[i][j] + 1); //注意:數組的初始化是以0開始的,這里以1開始輸出
}
printf("\n");
}

for(i = 0; i < n; i++)
{
free(a[i]);
}
free(a);

return 0;
}

❷ 演算法設計與分析:3階魔方陣

1、累加和=所有數字和/行數=(1+n2)*n2/2n=n(n2+1)/2

2、這叫幻方

3、奇數階幻方有構造方法:

從1開始,往右斜上順次填寫。

特殊情況:如果數字出了幻方,將該數填至行或列的另一端。

特殊情況2:如果要填寫的格子被佔了,數填在格子下方一格。

特殊情況3:我忘了。

❸ 演算法設計方法的介紹

《演算法設計方法》一書介紹了演算法描述和演算法分析的基本方法,詳細介紹了各種典型演算法的基本設計思路。演算法是計算機科學的核心內容之一,也是應用電子計算機求解實際問題的基礎。對復雜的實際應用問題的求解,大多都歸結為演算法的設計,然後把求解演算法轉化為計算機程序。

❹ 用c語言編寫一個演算法,其功能是給一維數組a輸入任意6個整數,假設為:574891讓後建立一個方陣

#include <stdio.h>
#include <stdlib.h>

void swap(int &a, int &b);//用來抓換2個變數的值

int main()
{
int arr[6];//定義數組
int i=0,j=0;
printf("input numbers\n");
for (i=0;i<6;i++)
{
scanf("%d",&arr[i]);//賦值
}
for (i=0;i<6;i++)
{
printf("%d ",arr[i]);//輸出所輸入的值
}
printf("\n");

for (j=0;j<6;j++)//循環執行6次
{
for (i=5;i>=1;i--)
{
swap(arr[i],arr[i-1]);
}
for (i=0;i<6;i++)
{
printf("%d ",arr[i]);//輸出新的值
}
printf("\n");
}
system("pause");
return 0;
}

void swap(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
在VS2008下通過

❺ 下面是一個5*5階螺旋方陣,設計一個演算法輸出此形式的n*n(n<20)階陣(逆時針方向旋轉) 。

#include<stdio.h>

#include<stdlib.h>

int main()

{int n,i,j,L,t,k=0,a[20][20]={0};

scanf("%d",&n);

L=n-1;

for(i=j=0;i<n/2;L-=2)

{

for(t=0;t<L;t++)a[i++][j]=++k;

for(t=0;t<L;t++)a[i][j++]=++k;

for(t=0;t<L;t++)a[i--][j]=++k;

for(t=0;t<L;t++)a[i][j--]=++k;

i++; j++;

}

if(n%2)a[i][j]=++k;

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

printf("%4d",a[i][j]);

printf(" ");

}

return 0;

}

❻ 設計一個演算法,列印一個字元串的所有排列

STL有

std::next_permutation(begin, end)
std::prev_permutation(begin, end)

❼ 用C語言設計演算法輸出一個5*5階的螺旋方陣

我在ACM上寫了一個N*N階螺旋陣的題,
代碼給你了,可能有點長。
輸入5即有結果。

#include <stdio.h>

int main()
{
int n,k,a[30][30]={0},x=0,y=0,w[5]={1,1,1,1,1};
scanf("%d",&n);
k=2;
a[0][0]=1;
while(k<=n*n){
if(w[1]&&(x>0&&a[x-1][y]==0)) {
a[x-1][y]=k;
k++;
x--;
if(x>0&&a[x-1][y]==0)
w[1]=1,w[2]=0,w[3]=0,w[4]=0;
else w[1]=0,w[2]=1,w[3]=1,w[4]=1;
}
else if(w[2]&&(y<n-1&&a[x][y+1]==0)){
a[x][y+1]=k;
k++;
y++;
if(y<n-1&&a[x][y+1]==0)
w[1]=0,w[2]=1,w[3]=0,w[4]=0;
else w[1]=1,w[2]=0,w[3]=1,w[4]=1;
}
else if(w[3]&&(x<n-1&&a[x+1][y]==0)){
a[x+1][y]=k;
k++;
x++;
if(x<n-1&&a[x+1][y]==0)
w[1]=0,w[2]=0,w[3]=1,w[4]=0;
else w[1]=1,w[2]=1,w[3]=0,w[4]=1;
}
else if(w[4]&&(y>0&&a[x][y-1]==0)){
a[x][y-1]=k;
k++;
y--;
if(y>0&&a[x][y-1]==0)
w[1]=0,w[2]=0,w[3]=0,w[4]=1;
else w[1]=1,w[2]=1,w[3]=1,w[4]=0;
}
}
for(k=0;k<n;k++){
int t=1;
for(x=0;x<n;x++){
if(t){
if(n<=3) printf("%-d",a[k][x]);
else if(n<=9) printf("%-2d",a[k][x]);
else printf("%-3d",a[k][x]);
t=0;
}
else {
if(x==n-1) printf(" %-d",a[k][x]);
else {
if(n<=3) printf(" %-d",a[k][x]);
else if(n<=9) printf(" %-2d",a[k][x]);
else printf(" %-3d",a[k][x]);
}
}
}
printf("\n");
}
return 0;
}

❽ 演算法設計基礎

python">#python3.7語言第一題用循環算
a=[[3,4,2],
[5,7,3],
[8,2,1],
[3,3,2.9]]

b=[[6,2,4],
[8,5,4],
[10,5,4]]

r=[[0]*3,[0]*3,[0]*3,[0]*3]
foriinrange(len(a)):
forjinrange(len(b[0])):
forkinrange(len(b)):
r[i][j]+=a[i][k]*b[k][j]
forlinr:print(l)
[70,36,36]
[116,60,60]
[74,31,44]
[71.0,35.5,35.6]
#第二題用numpy工具解
importnumpyasnp
ma=np.matrix([
[1,0,3,-1],
[2,1,0,2]])
mb=np.matrix([
[4,1,0],
[-1,1,3],
[2,0,1],
[1,3,4]])
print(ma*mb)
[[9-2-1]
[9911]]

❾ 2)演算法設計,要求輸入20個學生的成績,統計不及格學生的人數,並列印出來

#include<bits/stdc++.h>
using namespace std;
int a[50000],i;
int main()
{
for(i=1;i<=20;i++)
cin>>a[i];//讀入20個學生的成績

for(i=1;i<=20;i++)
if(a[i]<60) cout<<a[i]<<" "<<i<<endl;//逐個排查:如果成績小於60(不及格),那麼列印它的成績和學號;
}
(斜杠後面的字是解釋,可刪除,求採納!)

❿ 求一個n階魔方陣的演算法用標准c語言的風格來做的

對平面魔方的構造,分為三種情況:N為奇數、N為4的倍數、N為其它偶數(4n+2的形式)
⑴ N 為奇數時,最簡單
(1) 將1放在第一行中間一列;
(2) 從2開始直到n×n止各數依次按下列規則存放:
按 45°方向行走,如向右上
每一個數存放的行比前一個數的行數減1,列數加1
(3) 如果行列范圍超出矩陣范圍,則回繞。
例如1在第1行,則2應放在最下一行,列數同樣加1;
(4) 如果按上面規則確定的位置上已有數,或上一個數是第1行第n列時,
則把下一個數放在上一個數的下面。
⑵ N為4的倍數時
採用對稱元素交換法。
首先把數1到n×n按從上至下,從左到右順序填入矩陣
然後將方陣的所有4×4子方陣中的兩對角線上位置的數關於方陣中心作對
稱交換,即a(i,j)與a(n+1-i,n+1-j)交換,所有其它位置上的數不變。
(或者將對角線不變,其它位置對稱交換也可)
⑶ N 為其它偶數時
當n為非4倍數的偶數(即4n+2形)時:首先把大方陣分解為4個奇數(2m+1階)子方陣。
按上述奇數階魔方給分解的4個子方陣對應賦值
上左子陣最小(i),下右子陣次小(i+v),下左子陣最大(i+3v),上右子陣次大(i+2v)
即4個子方陣對應元素相差v,其中v=n*n/4
四個子矩陣由小到大排列方式為 ① ③
④ ②
然後作相應的元素交換:a(i,j)與a(i+u,j)在同一列做對應交換(j<t或j>n-t+2),
a(t-1,0)與a(t+u-1,0);a(t-1,t-1)與a(t+u-1,t-1)兩對元素交換
其中u=n/2,t=(n+2)/4 上述交換使每行每列與兩對角線上元素之和相等。

snjsj 我的程序演算法:
這個魔方陣的演算法可以對除2以外的任意階數的方陣進行輸出,結果保存在運行程序的目錄下面的Magic.txt文件中,用ie或者寫字板打開以保持格式的一致(主要是回車符在記事本中為黑方框,認不出來)。當然具體的程序中,有內存空間以及變數范圍的約束,我試過了,100以內的是可以的。
偶數階的演算法都是建立在奇數階的基礎之上,設方陣的階數為n,則魔方陣常數(即每列每行以及對角線元素之和)為n*(n*n+1)/2。

請對照程序代碼看,否則可能看不懂,可以一邊看一邊用筆對小階的進行演算。

先說奇數階的演算法,這是最容易的演算法:
n=2*m+1,m為自然數
1)將數字1填在(0,(n+1)/2) ;要注意c中是從下標0開始
2)從左上往右下依次填。
3)由2),列的下標出界(超過n-1)時,行加1,以n為摸的余數為應填的列數;
4)由2),行的下標出界(超過n-1)時,列加1,以n為摸的余數為應填的行數;
5)由2),行列都未出界,但已添上其他數,應在當前位置左橫移一個位置進行填數。

然後是偶數階:
分兩種情況,一種是n%4==2,一種是n%4==0
前一種:n=2*(2*m+1),m為自然數
1)將n階方陣分為四個小魔方陣ABCD如下排列:

B C
D A

因為n*n=4*(2*m+1)*(2*m+1),
記u=n/2=2*m+1,分為1~u*u,u*u+1~2*u*u,2*u*u+1~3*u*u,3*u*u+1~4*u*u
即在調用子函數的時候分別如下面傳遞參數:
A(0),B(u*u),C(2*u*u),D(3*u*u)
分別在ABCD中按照前面的填法把奇數階填好(注意加上所傳參數作為基數,每一個元素都要加上這個值),最後做如下交換:
(1)B中第0~(m-1)-1行中元素與C中相對應元素交換
(2)D中第(n-1)-m+1~(n-1)共m行的每行中的元素與A中相對應元素交換
(3)交換D:(u+m,m)與A中對應元素(矩陣中心值)
(4)交換D:(n-1,m)與A中對應元素(實際為矩陣最大值n*n)

所謂對應位置,指相對於小魔方陣的左頂角的相對的行列位置
上面的這些你可以用數學進行證明,利用魔方陣常數(注意n階的和u階的關系)

後一種:n=4*m,m為自然數
因為行列都是4的倍數,因而可以將整個矩陣分為每4*4的小矩陣。
先判斷一個數是否在劃為4*4小矩陣的對角線上,
如果在,則填該位置的數為n*n-i+1(i為該元素的相對位置,從1開始,比如n階的第s行第t個元素則其i=s*n+t)
如果不在,則填上i。

閱讀全文

與基礎演算法設計編輯列印方陣相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350