pta刷题编程
输出全排列
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
#define ll long long
using namespace std;
int b[11],a[11];
int n;
void fun(int k)
{
if(n==k-1)
{
for(int i=1;i<=n;i++)
printf("%d",a[i]);
printf("\n");
}
else
{
for(int i=1;i<=n;i++)
{
if(b[i]==0)
{
b[i]=1;
a[k]=i;
fun(k+1);
b[i]=0;
}
}
}
}
int main()
{
while(~scanf("%d",&n))
{
memset(b,0,sizeof(b));
fun(1);
}
return 0;
}
最大子列和问题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int s[100010];
int main() {
int i, j, n, ans = 0;
cin >> n;
for (i = 1; i <= n; i++) {
cin >> s[i];
}
for (i = 1; i <= n; i++) {
int temp = s[i];
for (j = i + 1; j <= n; j++) {
temp += s[j];
if (temp > ans) {
ans = temp;
}
}
}
cout << ans << endl;
return 0;
}
简单计算器
模拟就完事
#include<stdio.h>
int main()
{
int i, sum, isnan=0;
char op='0';
scanf("%d", &sum);
while(op!='='){
scanf("%c", &op);
if(op=='=')
break;
scanf("%d", &i);
if(op=='+')
sum=sum+i;
else if(op=='-')
sum=sum-i;
else if(op=='*')
sum=sum*i;
else if(op=='/'){
if(i!=0)
sum=sum/i;
else
isnan=1;
}
else
isnan=1;
}
if(isnan==1)
printf("ERROR");
else
printf("%d\n", sum);
return 0;
}
数列求和加强版
#include<stdio.h>
main()
{
int a,x;
scanf("%d%d",&a,&x);
long long d=0;
int q[100005];
if(x==0) printf("%d",0);
else
{
for(int i=0;i<x;i++)
{
d+=(x-i)*a;
q[i]=d%10;
d=d/10;
}
if(d) printf("%d",d);
for(int i=x-1;i>=0;i--)
{
printf("%d",q[i]);
}
}
}