分支結(jié)構(gòu)
略
循環(huán)結(jié)構(gòu)
求近似的圓周率
C
#include<stdio.h>
#include<math.h>
int main(){
int n;
scanf("%d",&n);
double pi = 0;
double cnt = 0;
double item = 1;
while(fabs(item)>pow(0.1,n)){
item = pow(-1,cnt)/(2*cnt+1);
pi = pi + item *4;
cnt = cnt + 1;
}
printf("%lf",pi);
return 0;
}
C++
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n;
cin>>n;
double pi = 0;
double cnt = 0;
double item = 1;
while(fabs(item)>pow(0.1,n)){
item = pow(-1,cnt)/(2*cnt+1);
pi = pi + item *4;
cnt = cnt + 1;
}
cout<<pi<<end;
return 0;
}
Java
public class piapprox{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double pi = 0;
double cnt = 0;
double item = 1;
while(Math.abs(item)>Math.pow(0.1,n)){
item = Math.pow(-1,cnt)/(2*cnt+1);
pi = pi + item *4;
cnt = cnt + 1;
}
System.out.println(pi);
}
}
Python
n = int(input())
pi = 0.
cnt = 0.
item = 1
while abs(item) > pow(0.1,n):
item = pow(-1,cnt) /(2*cnt+1)
pi = pi + item*4
cnt = cnt +1
print(pi)
求近似的自然對(duì)數(shù)e
C
#include<stdio.h>
#include<math.h>
int prod(int n){
int prd = 1;
for(int i = 1; i<= n;i++){
prd = prd * i;
}
return prd;
}
int main(){
int n;
scanf("%d",&n);
double e = 0;
int cnt = 0;
double item = 1;
while(fabs(item)>pow(0.1,n)){
item = 1.0 / prod(cnt);
e = e + item;
cnt = cnt + 1;
}
printf("%lf",e);
return 0;
}
C++
#include<iostream>
#include<cmath>
using namespace std;
int prod(int n){
int prd = 1;
for(int i = 1; i<= n;i++){
prd = prd * i;
}
return prd;
}
int main(){
int n;
cin>>n;
double e = 0;
int cnt = 0;
double item = 1;
while(fabs(item)>pow(0.1,n)){
item = 1.0 / prod(cnt);
e = e + item;
cnt = cnt + 1;
}
cout<<e<<endl;
return 0;
}
Java
public class eapprox{
public static int prod(int n){
int prd = 1;
for(int i = 1; i<= n;i++){
prd = prd * i;
}
return prd;
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double e = 0;
int cnt = 0;
double item = 1;
while(Math.abs(item)>Math.pow(0.1,n)){
item = 1.0 / prod(cnt);
e = e + item;
cnt = cnt + 1;
}
System.out.println(e);
}
}
Python
def prod(n):
prd = 1.0
for i in range(1,n+1):
prd = prd * i
return prd
n = int(input())
e = 0
cnt = 0
item = 1
while abs(item) > pow(0.1,n):
item = 1.0 /prod(cnt)
e = e + item
cnt = cnt +1
print(e)
遞歸
斐波那契數(shù)列
C
#include<stdio.h>
#include<math.h>
int fib(int n){
if(n==1){
return 1;
}
if(n==2){
return 1;
}
return fib(n-1)+fib(n-2);
}
int main(){
int n;
scanf("%d",&n);
printf("%d",fib(n));
return 0;
}
C++
#include<iostream>
#include<cmath>
using namespace std;
int fib(int n){
if(n==1){
return 1;
}
if(n==2){
return 1;
}
return fib(n-1)+fib(n-2);
}
int main(){
int n;
cin>>n;
cout<<fib(n)<<endl;
return 0;
}
Java
public class fib{
public static int fib(int n){
if(n==1){
return 1;
}
if(n==2){
return 1;
}
return fib(n-1)+fib(n-2);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(fib(n));
}
}
Python
nin = int(input())
def fib(n):
if n == 1:
return 1
if n == 2:
return 1
return fib(n-1) + fib(n-2)
print(fib(nin))
分治
二分搜索
C
#include<stdio.h>
#include<math.h>
int binarysearch(int arr[],int l,int r,int x){
int mid = l+r/2;
if (arr[mid]==x){
return mid;
}
if (l >= r)
return -1;
else if(arr[mid] >x){
return binarysearch(arr,l,mid-1,x);
}
else
return binarysearch(arr,mid+1,r,x);
}
int main(){
int n;
int arr[1000];
int x;
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%d",&arr[i]);
}
scanf("%d",&x);
printf("%d",binarysearch(arr,0,n,x));
return 0;
}
C++
#include<iostream>
#include<cmath>
using namespace std;
int binarysearch(int arr[],int l,int r,int x){
int mid = l+r/2;
if (arr[mid]==x){
return mid;
}
if (l >= r)
return -1;
else if(arr[mid] >x){
return binarysearch(arr,l,mid-1,x);
}
else
return binarysearch(arr,mid+1,r,x);
}
int main(){
int n;
int arr[1000];
int x;
cin>>n;
for(int i = 0;i<n;i++){
cin>>arr[i];
}
cin>>x;
cout<<binarysearch(arr,0,n-1,x)<<endl;
return 0;
}
Java
class binarysea{
public static int binarysearch(int arr[],int l,int r,int x){
int mid = (l+r)/2;
if (arr[mid]==x){
return mid;
}
else if (l >= r){
return -1;
}
else if(arr[mid] >x){
return binarysearch(arr,l,mid-1,x);
}
else
return binarysearch(arr,mid+1,r,x);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[1000];
for(int i = 0;i<n;i++){
arr[i]=sc.nextInt();
}
int x = sc.nextInt();
System.out.println(binarysearch(arr,0,n,x));
}
}
Python
arr = input().split(" ")
x = input()
def binarysearch(arr,l,r,x):
mid = int((l + r)/2)
if arr[mid] == x:
return mid
elif l >= r:
return -1
elif arr[mid] > x:
return binarysearch(arr,l,mid-1,x)
else :
return binarysearch(arr,mid+1,r,x)
print(binarysearch(arr,0,len(arr)-1,x))
回溯--圖的遍歷
輸入
6 6 //圖的大小
# # # # # #
# * * # * #
# # * * * #
# * * # * #
# # # * * #
# # # # # #
3 3 // 起始點(diǎn)
C
#include<stdio.h>
int visited[1000][1000];
char graph[1000][1000];
int detect(int x,int y){
if(visited[x][y]!= 1 && graph[x][y] != '#') return 1;
else return 0;
}
void huisu(int x,int y){
visited[x][y] = 1;
printf("%d %d\n",x,y);
int arr[4][2] = {{x+1,y},{x-1,y},{x,y+1},{x,y-1}};
for(int i = 0;i < 4;i++){
if(detect(arr[i][0],arr[i][1])){
huisu(arr[i][0],arr[i][1]);//l挪省X移摺!
}
}
}
int main(){
int m,n;
scanf("%d %d",&m,&n);
for(int i = 0;i < m;i++){
for(int j = 0;j<n;j++){
scanf(" %c",&graph[i][j]);
}
}
int st_x,st_y;
scanf("%d %d",&st_x,&st_y);
huisu(st_x,st_y);
}
C++
#include<iostream>
#include<cmath>
using namespace std;
int visited[1000][1000];
char graph[1000][1000];
int detect(int x,int y){
if(visited[x][y]!= 1 && graph[x][y] != '#') return 1;
else return 0;
}
void huisu(int x,int y){
visited[x][y] = 1;
cout<<x<<" "<<y<<endl;
int arr[4][2] = {{x+1,y},{x-1,y},{x,y+1},{x,y-1}};//=ぁW蛞洹!
for(int i = 0;i < 4;i++){
if(detect(arr[i][0],arr[i][1])){
huisu(arr[i][0],arr[i][1]);
}
}
}
int main(){
int m,n;
cin>>m>>n;
for(int i = 0;i < m;i++){
for(int j = 0;j<n;j++){
cin>>graph[i][j];
}
}
int st_x,st_y;
cin>>st_x>>st_y;
huisu(st_x,st_y);
}
Java
import java.util.Scanner;
public class graphgothr{
public static int visited[][] = new int[1000][1000];
public static char graph[][] = new char[1000][1000];
public static boolean detect(int x,int y){
if(visited[x][y]!= 1 && graph[x][y] != '#') return true;
else return false;
}
public static void huisu(int x, int y) {
visited[x][y] = 1;
System.out.println(x + " " + y);
int arr[][] = { { x + 1, y }, { x - 1, y }, { x, y + 1 }, { x, y - 1 } };//;贰H忧丁限府!
for (int i = 0; i < 4; i++) {
if (detect(arr[i][0], arr[i][1])) {
huisu(arr[i][0], arr[i][1]);
}
}
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
graph[i][j] = sc.next().toCharArray()[0];
}
}
int st_x = sc.nextInt();
int st_y = sc.nextInt();
huisu(st_x, st_y);
}
}
Python
m,n = [ int(i) for i in input().split()]
graph = [ [j for j in input().split()] for i in range(m)]
st_x ,st_y = [ int(i) for i in input().split()]
visited = [[0 for j in range(n)]for i in range(m)]
def detect(x,y):
global visited,graph,m,n
if visited[x][y] != 1 and graph[x][y] != '#':
return True
else:
return False
def huisu(x,y):
global visited,graph,m,n
visited[x][y] = 1
print(x,y)
diec = [(x+1,y),(x-1,y),(x,y+1),(x,y-1)]#6岵!胁勺!
for i in range(4):
if detect(diec[i][0],diec[i][1]):
huisu(diec[i][0],diec[i][1])
huisu(st_x,st_y)
通用額外問(wèn)題
- 掌握控制流世澜。
- 掌握全局變量的使用。
- 掌握遞歸署穗。
- 了解程序中標(biāo)注了A攘选!案疲!的地方的使用技巧封恰。
- 了解如何用遞歸樹(shù)和主定理判斷程序復(fù)雜度。
- 了解分治和回溯褐啡。
語(yǔ)言特性問(wèn)題
C
- 了解math.h里的內(nèi)容诺舔。
- 掌握浮點(diǎn)數(shù)的使用及浮點(diǎn)數(shù)運(yùn)算時(shí)會(huì)出現(xiàn)的問(wèn)題(提示:2進(jìn)制表示方法)。
- 理解scanf(" %c",&graph[i][j])這段" %c"的處理方式。
- 了解C語(yǔ)言的字符處理低飒。
- 掌握C語(yǔ)言利用函數(shù)返回值作為判斷條件的使用许昨。
C++
- 了解cmath里的內(nèi)容。
- 掌握浮點(diǎn)數(shù)的使用及浮點(diǎn)數(shù)運(yùn)算時(shí)會(huì)出現(xiàn)的問(wèn)題(提示:2進(jìn)制表示方法)褥赊。
- 了解C++的字符處理糕档。
- 了解C++的泛型。
- 掌握C++里的Boolean變量拌喉。
Java
- 了解java.Math的內(nèi)容速那。
- 掌握浮點(diǎn)數(shù)的使用及浮點(diǎn)數(shù)運(yùn)算時(shí)會(huì)出現(xiàn)的問(wèn)題(提示:2進(jìn)制表示方法)。
- 理解"graph[i][j] = sc.next().toCharArray()[0]"這段的處理方式司光。
- 掌握java里的靜態(tài)方法琅坡。
- 了解java里的String對(duì)應(yīng)的方法。
- 掌握java里的Boolean變量残家。
Python
- 掌握python的浮點(diǎn)數(shù)處理榆俺。
- 掌握其中的列表推導(dǎo)式。
- 掌握python的global關(guān)鍵字坞淮。
- 掌握python的True茴晋、False表示。