⑴ 關於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;
}
⑵ ACM 演算法超難題目
出題人的表達能力太差,題目敘述得很糟糕,最後兩個例子也錯了
比較好的敘述是,輸入n,輸出從0到32中取6項按字典序排序下的第n個組合(從第0個組合0,1,2,3,4,5開始計)
這種談不上什麼難題,只不過是入門級的問題
在給定前k項的(記第k項為m)情況下餘下的項共有C(32-m,6-k)種情況,這里C(x,y)表示x取y的組合數,以此編程即可
給你一個例子
#include<stdio.h>
intbinom(intn,intm)
{
inti,c=1;
if(2*m>n)
n=n-m;
for(i=1;i<=m;i++)
c=c*(n+1-i)/i;
returnc;
}
intmain()
{
inti,n;
intA[6]={-1};
while(scanf("%d",&n)!=EOF)
{
n++;
if(n<=0||n>binom(33,6))
{
printf("Invalidinput ");
continue;
}
for(i=1;i<=5;i++)
{
for(A[i]=A[i-1]+1;;A[i]++)
{
intt=binom(32-A[i],6-i);
if(n>t)
n-=t;
else
break;
}
printf("%d,",A[i]);
}
printf("%d ",A[i-1]+n);
}
return0;
}
⑶ C語言編程演算法問題
你這個太復雜。簡單的思路是:(1)保留A()=1-9數字的英文;(2)保留B()=10-19數字英文;
(3)保留C()={0,0,handred, thousand}。將任意數字分解為個、十、百、千等部分。然後組合為英語數字。
⑷ 收集各類貪心演算法(C語言編程)經典題目
舉個例子,假如你買東西,老闆需要找給你99分錢,他有上面面值分別為25分,10分,5分,1分的硬幣(都是假如,不符合實際),他得找你3個25分,2個10分的,4個1分的才為最佳方案!
用貪心演算法編寫程序實現!
main()
{
int
i,a[5],b[4],c[4];
/*
define
the
type
of
the
money*/
a[1]=25;
a[2]=10;
a[3]=5;
a[4]=1;
printf("please
input
you
money
(fen):\n");
scanf("%d",&b[0]);
for
(i=1;i<=4;i++)
{
b[i]=b[i-1]%a[i];
/*take
n
25
off
and
money
left*/
c[i]=(b[i-1]-b[i])/a[i];
/*
n
*/
printf("%d
is
%d\n",a[i],c[i]);
}
getch();
}
⑸ 關於c和演算法的一個編程題!跪求解決
用For……Next第一次1-30➗二,然後判斷那些整數,剩下的再➗三......以此類推(因為電不足了,沒法解釋完,望諒解)
⑹ 兩道編程演算法題(兩圖一道),題目如下,可以給出演算法思路或者源代碼,源代碼最好是C語言的
就會個第一題(因為第一題上已經給出了大致思路)
思路:用map容器(它的內部數據結構是一顆紅黑樹,查找和插入數據速度非常快)
map<int,st>a;//key(int):設置為1~n的數;value(st):設置為key的前驅和後繼;
這樣一來就可以像鏈錶快速插入數據,又可以像數組隨機訪問元素(key,就相當於數組的下標)
下面是代碼和運行截圖;
看代碼前建議先了解一下map容器的具體用法;
#include<iostream>
#include<map>
#include<vector>
using namespace std;
struct st{//兩個成員變數用來儲存前驅和後繼
int left;//0
int right;//1
st()
{
left=0;
right=0;
}
};
void input(map<int,st> &a)//輸出
{
st t;
int s=0;
map<int,st>::iterator it;//迭代器(指針)
for(it=a.begin();it!=a.end();it++)//循環迭代
{
t=it->second;
if(t.left==0)//左邊等於0,說明該數是第一個數
{
s=it->first;//記錄key
break;
}
}
t=a[s];
cout<<s<<" ";
while(t.right!=0)//循環找當前數的右邊的數(右邊的為0,就說明該數是最後一個數)
{
cout<<t.right<<" ";
t=a[t.right];
}
}
int main()
{
st t,t_i,t_x,t_k,s;
map<int,st>a;
map<int,st>::iterator it;
int n,x,p,x_l,x_r;
cin>>n;
for(int i=1;i<=n;i++)//map容器賦初值(i,t)
//i:(key)下標;t:(value)結構體變數
{
a.insert(make_pair(i,t));
}
for(int i=2;i<=n;i++)
{
cin>>x>>p;
if(p==0)//x的左邊插入i
{
t=a[x];
if(t.left==0)//x的左邊沒有數
{
t_x.left=i;
t_i.right=x;
a[x]=t_x;
a[i]=t_i;
}
else//x的左邊有數
{
int x_left;
t_x=a[x];
x_left=t_x.left;
t_k=a[x_left];
t_i.right=x;
t_i.left=t_x.left;
t_k.right=i;
t_x.left=i;
a[x]=t_x;
a[i]=t_i;
a[x_left]=t_k;
}
}
else//x的右邊插入i
{
t=a[x];
if(t.right==0)//x的右邊沒有數
{
t_x.right=i;
t_i.left=x;
a[x]=t_x;
a[i]=t_i;
}
else//x的左邊有數
{
int x_right;
t_x=a[x];
x_right=t_x.right;
t_k=a[x_right];
t_i.left=x;
t_i.right=t_x.right;
t_k.left=i;
t_x.right=i;
a[x]=t_x;
a[i]=t_i;
a[x_right]=t_k;
}
}
}
for(it=a.begin();it!=a.end();it++)//循環迭代列印各個數之間的關系
{
cout<<it->first<<" ";
cout<<"左邊:";
cout<<it->second.left<<" ";
cout<<"右邊:";
cout<<it->second.right<<endl;
}
input(a);//列印序列
return 0;
}
/*
4
1 0
2 1
1 0
2 3 4 1
*/
⑺ 編程:一道有些難度的演算法問題................
//穿越沙漠問題
/*
用一輛吉普車穿越1000公里的沙漠。
吉普車的總裝油量為500加侖,耗油率為1加侖/公里。
由於沙漠中沒有油庫,必須先用這輛車在沙漠中建立臨時油庫。
該吉普車以最少的耗油量穿越沙漠,應在什麼地方建油庫,以及各處的貯油量。
*/
#include <stdio.h>
#include <iostream>
using namespace std;
void desert()
{
int dis,k,oil,d1;
dis=500;
k=1;
oil=500;
cout<<"No.距起點(公里)儲油量"<<endl;
do{
cout<<k<<""<<1000-dis<<""<<oil<<endl;
k=k+1;
d1=dis;
dis=dis+500/(2*k-1);
oil= 500*k;
}while (dis<1000);
cout<<endl;
//原點處儲油量
oil=500*(k-1)+(1000-dis)*(2*k-1);
cout<<k<<""<<0<<""<<oil<<endl;
}
int main(int argc,char *argv[])
{
desert();
return 0;
}
⑻ 求助編程演算法問題,從1到100共100個整數里取出N個數,怎麼取,才能使得所有數兩兩的差盡量不相等
首先 理論分析:取 1, 2, 4, 7, 11...使得差數列為1, 2, 3, 4...
clear
clc
s=1;
i=1;
j=0;
while (i<100)
a(s)=i;
j=j+1;
i=i+j;
s=s+1;
end
a
用這個命令實現吧,N<=14時 兩兩作差均不等
⑼ 關於演算法編程題(C語言實現)
char *a; //字元串 改為 char a[20];//存放字元串的字元數組
int jie; //方程的解 改為 double jie;
dy = 0; 刪去 dy=0;
兩處的 for(i=1;i<=z;i++) 都改為 for(i = 0; i < z; i++)
if (a[i] == '==' ) 改為 if (a[i] == '=' )
{z=i; 改為 {dy = i;
a=0;b=0; 刪去 a=0;b=0;
fun(a,1,dy,&b,&c); 改為 fun(a, 0, dy - 1, &b, &c);
fun(a,dy,z,&b,&c); 改為 fun(a, dy + 1, z - 1, &b, &c);
jie=(d-b)/(e-c); 改為 jie=((double)(d-b))/(e-c);
printf("%c = %d",zm,jie); 改為 printf("%c = %f",zm,jie);
⑽ 在編程和演算法領域,有哪些經典問題
轉自知乎 作者:Clyde
排序
排序演算法:http://ke..com/view/297739.htm
冒泡排序法:http://ke..com/view/1313793.htm
起泡法:http://ke..com/view/174304.htm
雞尾酒排序:http://ke..com/view/1981861.htm
桶排序:http://ke..com/view/1784217.htm
計數排序:http://ke..com/view/1209480.htm
歸並排序:http://ke..com/view/90797.htm
排序二叉樹:http://ke..com/view/922220.html
鴿巢排序:http://ke..com/view/2020276.htm
基數排序:http://ke..com/view/1170573.htm
選擇排序法:http://ke..com/view/1575807.htm
希爾排序:http://ke..com/view/178698.htm
堆排序:http://ke..com/view/157305.htm
快速排序演算法:http://ke..com/view/19016.htm
插入排序法:http://ke..com/view/1443814.htm
樹形選擇排序:http://ke..com/view/3108940.html
========================================================
搜索
深度優先搜索:http://ke..com/view/288277.htm
寬度優先搜索:http://ke..com/view/825760.htm
啟發式搜索:http://ke..com/view/1237243.htm
蟻群演算法:http://ke..com/view/539346.htm
遺傳演算法:http://ke..com/view/45853.htm
========================================================
計算幾何
凸包:http://ke..com/view/707209.html
========================================================
圖論
哈夫曼編碼:http://ke..com/view/95311.htm
二叉樹遍歷:http://ke..com/view/549587.html
最短路徑:http://ke..com/view/349189.htm
Dijkstra演算法:http://ke..com/view/7839.htm
A*演算法:http://ke..com/view/7850.htm
SPFA演算法:http://ke..com/view/682464.html
Bellman-Ford演算法:http://ke..com/view/1481053.htm
floyd-warshall演算法:http://ke..com/view/2749461.htm
Dijkstra演算法:http://ke..com/view/7839.htm
最小生成樹:http://ke..com/view/288214.htm
Prim演算法:http://ke..com/view/671819.html
網路流:http://ke..com/view/165435.html
========================================================
動態規劃
動態規劃:http://ke..com/view/28146.htm
哈密頓圖:http://ke..com/view/143350.html
遞推:http://ke..com/view/3783120.htm
========================================================
動態規劃優化
優先隊列:http://ke..com/view/1267829.htm
單調隊列:http://ke..com/view/3771451.htm
四邊形不等式:http://ke..com/view/1985058.htm
========================================================
其他
隨機化演算法:http://ke..com/view/1071553.htm
遞歸:http://ke..com/view/96473.htm
窮舉搜索法:http://ke..com/view/1189634.htm
貪心演算法:http://ke..com/view/112297.htm
分治法:http://ke..com/view/1583824.htm
迭代法:http://ke..com/view/649495.htm
加密演算法:http://ke..com/view/155969.htm
回溯法:http://ke..com/view/45.htm
弦截法:http://ke..com/view/768310.htm
迭代法:http://ke..com/view/649495.htm
背包問題:http://ke..com/view/841810.htm
http://ke..com/view/1731915.htm
八皇後問題:http://ke..com/view/698719.htm
百雞問題:http://ke..com/view/367996.htm
二分法:http://ke..com/view/75441.htm
kmp演算法:http://ke..com/view/659777.html
遺傳演算法:http://ke..com/view/45853.htm
矩陣乘法:http://www.douban.com/group/topic/12416781/edit
Floyd演算法:http://ke..com/view/14495.html
路由演算法:http://ke..com/view/2276401.html
ICP演算法:http://ke..com/view/1954001.html
約瑟夫環:http://ke..com/view/717633.htm
約瑟夫問題:http://ke..com/view/213217.htm
AVL樹:http://ke..com/view/414610.htm
紅黑樹:http://ke..com/view/133754.htm
退火演算法:http://ke..com/view/335371.htm#sub335371
並查集:http://ke..com/view/521705.htm
線段樹:http://ke..com/view/670683.htm
左偏樹:http://ke..com/view/2918906.htm
Treap:http://ke..com/view/956602.htm
Trie樹:http://ke..com/view/1436495.html
RMQ:http://ke..com/view/1536346.htm
LCA :http://ke..com/view/409050.htm
矩陣乘法:http://ke..com/view/2455255.htm
高斯消元:http://ke..com/view/33268.html
銀行家演算法:http://ke..com/view/93075.htm