不定數選擇排序法-計算SWAP次數
遞迴計算最大公因數-計算函數呼叫次數 遞迴算費式數列-計算函數呼叫次數
互斥加解密
函數重載-swap
1A2B
檢查回文
字元字串-字串長度 字元字串-前後字元新增
河內塔
遞迴計算最大公因數-計算函數呼叫次數 遞迴算費式數列-計算函數呼叫次數
互斥加解密
函數重載-swap
1A2B
檢查回文
字元字串-字串長度 字元字串-前後字元新增
河內塔
我最近忙死了~
以上
以上
不定數選擇排序法-計算SWAP次數
#include<iostream>
using namespace std;
int k=0;
void SWAP(int &a,int &b){
int t=a;
a=b;
b=t;
k++;
}
int main(){
int n,*data;
cout<<"Input:"<<endl;
cin>>n;
data=new int[n];
for(int i=0;i<n;i++)cin>>data[i];
for(int i=0;i<n;i++)for(int j=i;j<n;j++) if(data[i]>data[j]) SWAP(data[i],data[j]);
cout<<k<<" SWAPS"<<endl;
for(int i=0;i<n;i++)cout<<" "<<data[i];
delete []data;
return 0;
}
using namespace std;
int k=0;
void SWAP(int &a,int &b){
int t=a;
a=b;
b=t;
k++;
}
int main(){
int n,*data;
cout<<"Input:"<<endl;
cin>>n;
data=new int[n];
for(int i=0;i<n;i++)cin>>data[i];
for(int i=0;i<n;i++)for(int j=i;j<n;j++) if(data[i]>data[j]) SWAP(data[i],data[j]);
cout<<k<<" SWAPS"<<endl;
for(int i=0;i<n;i++)cout<<" "<<data[i];
delete []data;
return 0;
}
遞迴計算最大公因數-計算函數呼叫次數
#include<iostream>
using namespace std;
int k=0;
int gcd(int x,int y){
k++;
if(x<0)return gcd(-x,y);
if(x>y)return gcd(y,x);
if(x==0)return y;
return gcd(y%x,x);
}
int main(){
int x,y,ans;
cout<<"x y"<<endl;
cin>>x>>y;
ans=gcd(x,y);
cout<<k<<" function calls"<<endl;
cout<<"gcd="<<ans;
}
using namespace std;
int k=0;
int gcd(int x,int y){
k++;
if(x<0)return gcd(-x,y);
if(x>y)return gcd(y,x);
if(x==0)return y;
return gcd(y%x,x);
}
int main(){
int x,y,ans;
cout<<"x y"<<endl;
cin>>x>>y;
ans=gcd(x,y);
cout<<k<<" function calls"<<endl;
cout<<"gcd="<<ans;
}
遞迴算費式數列-計算函數呼叫次數
#include<iostream>
using namespace std;
int k=0;
int f(int n){
k++;
if(n==0)return 0;
if(n==1)return 1;
return f(n-1)+f(n-2);
}
int main(){
int n,ans;
cout<<"n:"<<endl<<endl;
cin>>n;
ans=f(n);
cout<<k<<" function calls"<<endl;
cout<<"f(n)="<<ans;
}
using namespace std;
int k=0;
int f(int n){
k++;
if(n==0)return 0;
if(n==1)return 1;
return f(n-1)+f(n-2);
}
int main(){
int n,ans;
cout<<"n:"<<endl<<endl;
cin>>n;
ans=f(n);
cout<<k<<" function calls"<<endl;
cout<<"f(n)="<<ans;
}
互斥加解密
#include<iostream>
using namespace std;
void enc(int size,char key,char *doc){
for(int i=0;i<size;i++){
doc[i]=doc[i]^key;
}
}
int main(){
cout<<endl<<"請輸入一段連文字:";char doc[1024];cin>>doc;
cout<<endl<<"請輸入密碼:";char key;cin>>key;
int size=0;while(doc[size])size++;
enc(size,key,doc);cout<<endl<<"密文為:"<<doc;
enc(size,key,doc);cout<<endl<<"解密後為:"<<doc;
return 0;
}
把每一個字元跟密碼子作互斥運算加密~
一種加密的方法~
想當年Fate的文本就是把每一個byte對0x36作xor加密完成的
using namespace std;
void enc(int size,char key,char *doc){
for(int i=0;i<size;i++){
doc[i]=doc[i]^key;
}
}
int main(){
cout<<endl<<"請輸入一段連文字:";char doc[1024];cin>>doc;
cout<<endl<<"請輸入密碼:";char key;cin>>key;
int size=0;while(doc[size])size++;
enc(size,key,doc);cout<<endl<<"密文為:"<<doc;
enc(size,key,doc);cout<<endl<<"解密後為:"<<doc;
return 0;
}
把每一個字元跟密碼子作互斥運算加密~
一種加密的方法~
想當年Fate的文本就是把每一個byte對0x36作xor加密完成的
函數重載-swap
#include<iostream>
#include<string>
using namespace std;
void SWAP(int &a,int &b){
swap(a,b);
}
void SWAP(string &a,string &b){
swap(a,b);
}
int main(){
{int a,b;cin>>a>>b;SWAP(a,b);cout<<endl<<a<<" "<<b;}
{string a,b;cin>>a>>b;SWAP(a,b);cout<<endl<<a<<" "<<b;}
return 0;
}
!?我怎麼不記得教過STRING了?
#include<string>
using namespace std;
void SWAP(int &a,int &b){
swap(a,b);
}
void SWAP(string &a,string &b){
swap(a,b);
}
int main(){
{int a,b;cin>>a>>b;SWAP(a,b);cout<<endl<<a<<" "<<b;}
{string a,b;cin>>a>>b;SWAP(a,b);cout<<endl<<a<<" "<<b;}
return 0;
}
!?我怎麼不記得教過STRING了?
1A2B
#include<iostream>
#include<string>
using namespace std;
int main(){
string a,b;
int in[10],m=0,n=0;
for(int i=0;i<10;i++)in[i]=0;
cout<<"Input:"<<endl;
cin>>a>>b;
for(int i=0;i<4;i++){
in[b[i]-48]++;
if(a[i]==b[i])m++;
}
for(int i=0;i<4;i++){
n+=in[a[i]-48];
}
cout<<m<<"A"<<n-m<<"B";
}
不可思議的規則!?~
那就用不可思議的寫法吧
(也就是這東東不能拿來玩真正的猜數字)
.....是說想想題目好像也沒說這是猜數字阿XD
#include<string>
using namespace std;
int main(){
string a,b;
int in[10],m=0,n=0;
for(int i=0;i<10;i++)in[i]=0;
cout<<"Input:"<<endl;
cin>>a>>b;
for(int i=0;i<4;i++){
in[b[i]-48]++;
if(a[i]==b[i])m++;
}
for(int i=0;i<4;i++){
n+=in[a[i]-48];
}
cout<<m<<"A"<<n-m<<"B";
}
不可思議的規則!?~
那就用不可思議的寫法吧
(也就是這東東不能拿來玩真正的猜數字)
.....是說想想題目好像也沒說這是猜數字阿XD
檢查回文
#include<iostream>
#include<string>
using namespace std;
int main(){
string a,b="";
cout<<"Input:"<<endl;
cin>>a;
for(int i=a.length()-1;i>=0;i--)b+=a[i];
if(a==b)cout<<"Yes";
else cout<<"No";
}
#include<string>
using namespace std;
int main(){
string a,b="";
cout<<"Input:"<<endl;
cin>>a;
for(int i=a.length()-1;i>=0;i--)b+=a[i];
if(a==b)cout<<"Yes";
else cout<<"No";
}
字元字串-字串長度
#include<iostream>
using namespace std;
int STRLEN(char* d){
int i=0;
for(i=0;d[i];i++);
return i;
}
int main(){
cout<<"Input:";char d[1024];
int i;for(i=0,cin.read(&d[i],1); d[i]!=10 && d[i]!=13; cin.read(&d[++i],1));d[i]=0;
cout<<endl<<"Len:"<<STRLEN(d);
return 0;
}
using namespace std;
int STRLEN(char* d){
int i=0;
for(i=0;d[i];i++);
return i;
}
int main(){
cout<<"Input:";char d[1024];
int i;for(i=0,cin.read(&d[i],1); d[i]!=10 && d[i]!=13; cin.read(&d[++i],1));d[i]=0;
cout<<endl<<"Len:"<<STRLEN(d);
return 0;
}
字元字串-前後字元新增
#include<iostream>
using namespace std;
char* PUSH_FRONT(char*d,char c){
int l;
for( l=0;d[l];l++);
for(int i=l;i>0;i--){
d[i]=d[i-1];
}
d[0]=c;
d[l+1]=0;
return d;
}
char* PUSH_BACK(char*d,char c){
int l;
for( l=0;d[l];l++);
d[l]=c;
d[l+1]=0;
return d;
}
int main(){
cout<<"Input:";char d[1024];
int i;for(i=0,cin.read(&d[i],1); d[i]!='\r' && d[i]!='\n'; cin.read(&d[++i],1));d[i]=0;
cout<<endl<<d;
cout<<endl<<PUSH_FRONT(d,'A');
cout<<endl<<PUSH_BACK(d,'Z');
return 0;
}
不能用string真是討厭
using namespace std;
char* PUSH_FRONT(char*d,char c){
int l;
for( l=0;d[l];l++);
for(int i=l;i>0;i--){
d[i]=d[i-1];
}
d[0]=c;
d[l+1]=0;
return d;
}
char* PUSH_BACK(char*d,char c){
int l;
for( l=0;d[l];l++);
d[l]=c;
d[l+1]=0;
return d;
}
int main(){
cout<<"Input:";char d[1024];
int i;for(i=0,cin.read(&d[i],1); d[i]!='\r' && d[i]!='\n'; cin.read(&d[++i],1));d[i]=0;
cout<<endl<<d;
cout<<endl<<PUSH_FRONT(d,'A');
cout<<endl<<PUSH_BACK(d,'Z');
return 0;
}
不能用string真是討厭
河內塔
#include<iostream>
using namespace std;
int k=0;
void move(int n,char A,char B,char C){
if(n==1){
k++;
cout<<endl<<"Step "<<k<<": move one from "<<A<<" to "<<C;
}
else {
move(n-1,A,C,B);
move(1,A,B,C);
move(n-1,B,A,C);
}
}
int main(){
cout<<"N=";int n;cin>>n;
move(n,'A','B','C');
return 0;
}
對遞迴的心理創傷來源!!!
河內塔
很討厭的東西~有空再去懂........
using namespace std;
int k=0;
void move(int n,char A,char B,char C){
if(n==1){
k++;
cout<<endl<<"Step "<<k<<": move one from "<<A<<" to "<<C;
}
else {
move(n-1,A,C,B);
move(1,A,B,C);
move(n-1,B,A,C);
}
}
int main(){
cout<<"N=";int n;cin>>n;
move(n,'A','B','C');
return 0;
}
對遞迴的心理創傷來源!!!
河內塔
很討厭的東西~有空再去懂........