昨晚做一道题,本来想暴力剪枝来着,剪枝没法减了还过不了,去学习了一下输入输出挂,结果还是过不了,事实证明是自己算法比较渣,还有没有掌握熟练"合理估计问题复杂度"的知识,不过还是写一下输入输出挂吧,万一以后用得到呢~~~
纯整数输入输出挂
#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;
}