昨晚做一道題,本來想暴力剪枝來着,剪枝沒法減了還過不了,去學習了一下輸入輸出掛,結果還是過不了,事實證明是自己算法比較渣,還有沒有掌握熟練"合理估計問題複雜度"的知識,不過還是寫一下輸入輸出掛吧,萬一以後用得到呢~~~
純整數輸入輸出掛
#include <stdio.h>
bool scan_d(int &num)//輸入整型
{
char in;bool IsN=false;
in=getchar();
if(in==EOF) return false;
while(in!='-'&&(in<'0'||in>'9')) {
if(in==EOF)
return false;
in=getchar();
}
if(in=='-'){ IsN=true;num=0;}
else num=in-'0';
while(in=getchar(),in>='0'&&in<='9'){
num*=10,num+=in-'0';
}
if(IsN) num=-num;
return true;
}
bool scan_lf(double &num)//輸入double型
{
char in;double Dec=0.1;
bool IsN=false,IsD=false;
in=getchar();
if(in==EOF) return false;
while(in!='-'&&in!='.'&&(in<'0'||in>'9'))
in=getchar();
if(in=='-'){IsN=true;num=0;}
else if(in=='.'){IsD=true;num=0;}
else num=in-'0';
if(!IsD){
while(in=getchar(),in>='0'&&in<='9'){
num*=10;num+=in-'0';}
}
if(in!='.'){
if(IsN) num=-num;
return true;
}else{
while(in=getchar(),in>='0'&&in<='9'){
num+=Dec*(in-'0');Dec*=0.1;
}
}
if(IsN) num=-num;
return true;
}
void print_d(int num)//輸出整型
{
bool flag = false;
if(num < 0) {
putchar('-');
num = -num;
}
int ans[10], top = 0;
while(num != 0) {
ans[top++] = num%10;
num /= 10;
}
if(top == 0) putchar('0');
for(int i = top-1; i >= 0; i--) {
char ch = ans[i] + '0';
putchar(ch);
}
}
int main()
{
int i,j;
int a[1000];
double b[1000];
int n;
while(scan_d(n)){
for(i=1;i<=n;i++)
scan_d(a[i]);
for(i=1;i<=n;i++)
scan_lf(b[i]);
for(i=1;i<=n;i++){
print_d(a[i]);
putchar(' ');
}
putchar('\n');
for(i=1;i<=n;i++){
printf("%lf",b[i]);
putchar(' ');
}
putchar('\n');
}
return 0;
}