├── README.md ├── 1173:阶乘和.cpp ├── 1192:放苹果.cpp ├── 1196:踩方格.cpp ├── 1206:放苹果.cpp ├── 1215:迷宫.cpp ├── 1151:素数个数.cpp ├── 1175:除以13.cpp ├── 1217:棋盘问题.cpp ├── 1224:最大子矩阵.cpp ├── 1255:迷宫问题.cpp ├── 1202:Pell数列(溢出).cpp ├── 1307:【例1.3】高精度乘法.cpp ├── 1259:【例9.3】求最长不下降序列.cpp ├── 1314:【例3.6】过河卒(Noip2002)(WA).cpp ├── 1105:数组逆序重存放.cpp ├── 1162:字符串逆序.cpp ├── 1081:分苹果.cpp ├── 1071:菲波那契数.cpp ├── 1033:计算线段长度.cpp ├── 1059:求平均年龄.cpp ├── 1050:骑车与走路.cpp ├── 1088:分离整数的各个数.cpp ├── 1091:求阶乘的和.cpp ├── 1065:奇数求和.cpp ├── 1069:乘方计算.cpp ├── 1066:满足条件的数累加.cpp ├── 1060:均值.cpp ├── 1080:余数相同问题.cpp ├── 1092:求出e的值.cpp ├── 1049:晶晶赴约会.cpp ├── 1070:人口增长.cpp ├── 1093:计算多项式的值.cpp ├── 1079:计算分数加减表达式的值.cpp ├── 1159:斐波那契数列.cpp ├── 1204:爬楼梯.cpp ├── 1207:求最大公约数问题.cpp ├── 1201:菲波那契数列.cpp ├── 1129:统计数字字符个数.cpp ├── 1068:与指定数字相同的数的个数.cpp ├── 1086:角谷猜想.cpp ├── 1166:求f(x,n).cpp ├── 1062:最高的分数.cpp ├── 1176:谁考了第k名.cpp ├── 上台阶.cpp ├── 1190:上台阶.cpp ├── 1078:求分数序列和.cpp ├── 1205:汉诺塔问题.cpp ├── 1313:【例3.5】位数问题.cpp ├── 1064:奥运奖牌计数.cpp ├── 1326:【例7.5】 取余运算(mod).cpp ├── 1077:统计满足条件的4位数.cpp ├── 1067:整数的个数.cpp ├── 1312:【例3.4】昆虫繁殖(DOUBT).cpp ├── 1131:基因相关性.cpp ├── 1089:数字反转.cpp ├── 1144:单词翻转.cpp ├── 1094:与7无关的数(WA).cpp ├── 1130:找第一个只出现一次的字符.cpp ├── 1312:【例3.4】昆虫繁殖.cpp ├── 1258:【例9.2】数字金字塔.cpp ├── 1136:密码翻译.cpp ├── 1316:【例4.6】数的计数(Noip2001).cpp ├── 1193:吃糖果.cpp ├── 1208:2的幂次方表示.cpp ├── 1317:【例5.2】组合的输出.cpp ├── 1208:2的幂次方表示 (再想想).cpp ├── 1320:【例6.2】均分纸牌(Noip2002).cpp ├── 1353:表达式括号匹配(stack).cpp ├── 1194:移动路线.cpp ├── 1318:【例5.3】自然数的拆分.cpp ├── 1324:【例6.6】整数区间.cpp ├── 1137:加密的病历单.cpp ├── 1323:【例6.5】活动选择.cpp ├── 1149:最长单词2.cpp ├── 1218:取石子游戏.cpp ├── 1328:【例7.7】光荣的梦想.cpp ├── 1223:An Easy Problem.cpp ├── 归并排序.cpp ├── 1322:【例6.4】拦截导弹问题(Noip1999).cpp ├── 1311:【例2.5】求逆序对.cpp ├── 1321:【例6.3】删数问题(Noip1994).cpp ├── 1143:最长最短单词.cpp ├── 1319:【例6.1】排队接水.cpp ├── 1327:【例7.6】黑白棋子的移动.cpp ├── 1354:括弧匹配检验.cpp ├── 1261:【例9.5】城市交通路网.cpp ├── 1331:【例1-2】后缀表达式的值.cpp ├── 1325:【例7.4】 循环比赛日程表.cpp ├── 1219:马走日.cpp ├── 1256:献给阿尔吉侬的花束.cpp ├── 1212:LETTERS.cpp ├── 1214:八皇后.cpp ├── 1330:【例8.3】最少步数.cpp ├── 1203:扩号匹配问题.cpp ├── 1236:区间合并.cpp ├── 1262:【例9.6】挖地雷.cpp ├── 1213:八皇后问题.cpp ├── 1249:Lake Counting.cpp ├── 1216:红与黑.cpp ├── 1355:字符串匹配问题(strs).cpp ├── 1329:【例8.2】细胞.cpp ├── 1252:走迷宫.cpp ├── 1250:The Castle.cpp ├── 1251:仙岛求药.cpp └── 1248:Dungeon Master.cpp /README.md: -------------------------------------------------------------------------------- 1 | # code -------------------------------------------------------------------------------- /1173:阶乘和.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1173:阶乘和.cpp -------------------------------------------------------------------------------- /1192:放苹果.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1192:放苹果.cpp -------------------------------------------------------------------------------- /1196:踩方格.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1196:踩方格.cpp -------------------------------------------------------------------------------- /1206:放苹果.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1206:放苹果.cpp -------------------------------------------------------------------------------- /1215:迷宫.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1215:迷宫.cpp -------------------------------------------------------------------------------- /1151:素数个数.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1151:素数个数.cpp -------------------------------------------------------------------------------- /1175:除以13.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1175:除以13.cpp -------------------------------------------------------------------------------- /1217:棋盘问题.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1217:棋盘问题.cpp -------------------------------------------------------------------------------- /1224:最大子矩阵.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1224:最大子矩阵.cpp -------------------------------------------------------------------------------- /1255:迷宫问题.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1255:迷宫问题.cpp -------------------------------------------------------------------------------- /1202:Pell数列(溢出).cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1202:Pell数列(溢出).cpp -------------------------------------------------------------------------------- /1307:【例1.3】高精度乘法.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1307:【例1.3】高精度乘法.cpp -------------------------------------------------------------------------------- /1259:【例9.3】求最长不下降序列.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1259:【例9.3】求最长不下降序列.cpp -------------------------------------------------------------------------------- /1314:【例3.6】过河卒(Noip2002)(WA).cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThreebodyDarkforest/YBT/HEAD/1314:【例3.6】过河卒(Noip2002)(WA).cpp -------------------------------------------------------------------------------- /1105:数组逆序重存放.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | int n,a[101]; 6 | scanf("%d",&n); 7 | for(int i=0;i=0;j--) printf("%d ",a[j]); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /1162:字符串逆序.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std; 4 | int main() 5 | { 6 | char a[100001]; 7 | int i=0,j; 8 | while((a[i++]=getchar())!='!'); 9 | for(j=i-2;j>=0;j--) printf("%c",a[j]); 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /1081:分苹果.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std; 4 | int main() 5 | { 6 | int n,ans=0; 7 | scanf("%d",&n); 8 | for(int i=0;i<=n;i++) 9 | { 10 | ans+=i; 11 | } 12 | printf("%d",ans); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /1071:菲波那契数.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | int n,f1=1,f2=1,fn=1; 6 | scanf("%d",&n); 7 | for(int i=2;i 2 | #include 3 | #include 4 | using namespace std; 5 | int main() 6 | { 7 | double xa,xb,ya,yb; 8 | scanf("%lf%lf%lf%lf",&xa,&ya,&xb,&yb); 9 | printf("%.3lf",sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb))); 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /1059:求平均年龄.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | int n; 6 | double a[101],sum=0; 7 | scanf("%d",&n); 8 | for(int i=0;i 2 | using namespace std; 3 | int main() 4 | { 5 | double n,w,b; 6 | scanf("%lf",&n); 7 | w=n/1.2; 8 | b=(n/3.0)+50; 9 | if(w>b) printf("Bike"); 10 | else if(w 2 | using namespace std; 3 | int main() 4 | { 5 | long long int n,temp; 6 | scanf("%lld",&n); 7 | while(n!=0) 8 | { 9 | temp=n; 10 | temp=n%10; 11 | n/=10; 12 | printf("%lld ",temp); 13 | } 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /1091:求阶乘的和.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | int n,ans=0,temp; 6 | scanf("%d",&n); 7 | for(int i=1;i<=n;i++){ 8 | temp=1; 9 | for(int j=1;j<=i;j++) temp*=j; 10 | ans+=temp; 11 | } 12 | printf("%d",ans); 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /1065:奇数求和.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int m,n,ans=0; 9 | scanf("%d%d",&m,&n); 10 | for(int i=m;i<=n;i++) if(i%2==1) ans+=i; 11 | printf("%d",ans); 12 | return 0; 13 | } 14 | -------------------------------------------------------------------------------- /1069:乘方计算.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int a,n; 9 | scanf("%d%d",&a,&n); 10 | int ans=a; 11 | for(int i=1;i 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int m,n,ans=0; 9 | scanf("%d%d",&m,&n); 10 | for(int i=m;i<=n;i++) if(i%17==0) ans+=i; 11 | printf("%d",ans); 12 | return 0; 13 | } 14 | -------------------------------------------------------------------------------- /1060:均值.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | int n; 6 | double a[101],sum; 7 | scanf("%d",&n); 8 | for(int asshole=0;asshole 2 | #include 3 | using namespace std; 4 | int main() 5 | { 6 | int a,b,c,x; 7 | scanf("%d%d%d",&a,&b,&c); 8 | for(x=2;x 2 | using namespace std; 3 | int main() 4 | { 5 | int n; 6 | double ans=1,temp; 7 | scanf("%d",&n); 8 | for(int i=1;i<=n;i++){ 9 | temp=1.0; 10 | for(int j=1;j<=i;j++) temp*=j; 11 | ans+=1.0/temp; 12 | } 13 | printf("%.10lf",ans); 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /1049:晶晶赴约会.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | int d; 6 | scanf("%d",&d); 7 | switch(d) 8 | { 9 | case 1: printf("NO"); break; 10 | case 3: printf("NO"); break; 11 | case 5: printf("NO"); break; 12 | default: printf("YES"); break; 13 | } 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /1070:人口增长.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int n; 9 | double x,ans; 10 | scanf("%lf%d",&x,&n); 11 | ans=x; 12 | for(int i=0;i 2 | using namespace std; 3 | int main() 4 | { 5 | int n; 6 | double x,ans=1,temp; 7 | scanf("%lf%d",&x,&n); 8 | for(int i=1;i<=n;i++){ 9 | temp=1.0; 10 | for(int j=1;j<=i;j++) temp*=x; 11 | ans+=temp; 12 | } 13 | printf("%.2lf",ans); 14 | return 0; 15 | } 16 | -------------------------------------------------------------------------------- /1079:计算分数加减表达式的值.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std; 4 | int main() 5 | { 6 | int n,s=1; 7 | double sum=0; 8 | scanf("%d",&n); 9 | for(int i=1;i 2 | using namespace std; 3 | int fun(int); 4 | int fun(int x) 5 | { 6 | if(x==2||x==3) return 1; 7 | else if(x==1) return 0; 8 | else return fun(x-1)+fun(x-2); 9 | } 10 | int main() 11 | { 12 | int n; 13 | scanf("%d",&n); 14 | printf("%d",fun(n)); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /1204:爬楼梯.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | int fun(int x) 6 | { 7 | if(x==1||x==2||x==3) return x; 8 | else return fun(x-1)+fun(x-2); 9 | } 10 | int main() 11 | { 12 | int n; 13 | while(cin>>n) 14 | printf("%d\n",fun(n)); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /1207:求最大公约数问题.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | int gcd(int a,int b) 6 | { 7 | if(b==0) return a; 8 | else return gcd(b,a%b); 9 | } 10 | int main() 11 | { 12 | int a,b; 13 | scanf("%d%d",&a,&b); 14 | printf("%d",gcd(a,b)); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /1201:菲波那契数列.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int fun(int x) 4 | { 5 | if(x==1||x==2) return 1; 6 | return fun(x-1)+fun(x-2); 7 | } 8 | int main() 9 | { 10 | int n,x; 11 | scanf("%d",&n); 12 | for(int i=0;i 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | char s[255]; 9 | int ans=0; 10 | gets(s); 11 | for(int i=0;i=48&&s[i]<=57) ans++; 14 | } 15 | printf("%d",ans); 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /1068:与指定数字相同的数的个数.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int n,m,tmp,ans=0; 9 | scanf("%d%d",&n,&m); 10 | for(int i=0;i 2 | using namespace std; 3 | int main() 4 | { 5 | int n; 6 | scanf("%d",&n); 7 | do{ 8 | if(n%2==0){ 9 | n/=2; 10 | printf("%d/2=%d\n",n*2,n); 11 | 12 | }else if(n%2==1) { 13 | n=n*3+1; 14 | printf("%d*3+1=%d\n",(n-1)/3,n); 15 | } 16 | }while(n!=1); 17 | printf("End"); 18 | return 0; 19 | } 20 | -------------------------------------------------------------------------------- /1166:求f(x,n).cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std; 4 | double fun(double,double); 5 | double fun(double x,double n) 6 | { 7 | if(n==1) return sqrt(x+n); 8 | else return sqrt(n+fun(x,n-1)); 9 | } 10 | int main() 11 | { 12 | double a,b; 13 | scanf("%lf%lf",&a,&b); 14 | printf("%.2lf",fun(a,b)); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /1062:最高的分数.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int n; 9 | scanf("%d",&n); 10 | int a[101]; 11 | for(int i=0;i 2 | #include 3 | using namespace std; 4 | struct student 5 | { 6 | int code,score; 7 | }a[101]; 8 | int main() 9 | { 10 | int k,n; 11 | scanf("%d%d",&n,&k); 12 | for(int i=0;i 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int n; 9 | long long a[101]={0}; 10 | a[1]=1;a[2]=2;a[3]=4; 11 | for(int i=4;i<=100;i++) 12 | { 13 | a[i]=a[i-3]+a[i-2]+a[i-1]; 14 | } 15 | while(scanf("%d",&n)==1&&n!=0) 16 | printf("%lld\n",a[n]); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /1190:上台阶.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int n; 9 | long long a[101]={0}; 10 | a[1]=1;a[2]=2;a[3]=4; 11 | for(int i=4;i<=100;i++) 12 | { 13 | a[i]=a[i-3]+a[i-2]+a[i-1]; 14 | } 15 | while(scanf("%d",&n)==1&&n!=0) 16 | printf("%lld\n",a[n]); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /1078:求分数序列和.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std; 4 | int main() 5 | { 6 | double a[50],q=2,p=1,ans=0,tmp; 7 | int n; 8 | a[0]=q/p; 9 | for(int i=1;i<=50;i++) 10 | { 11 | tmp=p; 12 | p=q; 13 | q+=tmp; 14 | a[i]=q/p; 15 | } 16 | scanf("%d",&n); 17 | for(int i=0;i 2 | #include 3 | #include 4 | using namespace std; 5 | int n; 6 | char x,y,z; 7 | void mov(int n,char a,char c,char b) 8 | { 9 | if(n==0) return; 10 | mov(n-1,a,b,c); 11 | cout<"<"<>n; 17 | cin>>x>>y>>z; 18 | mov(n,x,y,z); 19 | return 0; 20 | } 21 | -------------------------------------------------------------------------------- /1313:【例3.5】位数问题.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std; 4 | int main() 5 | { 6 | int f[1001][2],n,i,x; 7 | scanf("%d",&n); 8 | f[1][0]=9;f[1][1]=1; 9 | for(i=2;i<=n;i++) 10 | { 11 | x=f[1][0]; 12 | if(i==n) x--; 13 | f[i][0]=(f[i-1][0]*x+f[i-1][1])%12345; 14 | f[i][1]=(f[i-1][1]*x+f[i-1][0])%12345; 15 | } 16 | printf("%d",f[n][0]); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /1064:奥运奖牌计数.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int a,as=0,b,bs=0,c,cs=0,tot=0; 9 | int n; 10 | scanf("%d",&n); 11 | for(int i=0;i 2 | #include 3 | #include 4 | int b,p,k,t; 5 | int f(int p) 6 | { 7 | if(p==0) return 1; 8 | int tmp=f(p/2)%k; 9 | tmp=(tmp*tmp)%k; 10 | if(p%2==1) tmp=(tmp*b)%k; 11 | return tmp; 12 | } 13 | int main() 14 | { 15 | scanf("%d%d%d",&b,&p,&k); 16 | int tmpb=b; 17 | b%=k; 18 | printf("%d^%d mod %d=%d",tmpb,p,k,f(p)); 19 | return 0; 20 | } 21 | -------------------------------------------------------------------------------- /1077:统计满足条件的4位数.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int sum=0,n,x; 9 | scanf("%d",&n); 10 | for(int i=0;i0) sum++; 15 | } 16 | printf("%d",sum); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /1067:整数的个数.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int n,ans1=0,ans5=0,ans0=0,tmp; 9 | scanf("%d",&n); 10 | for(int i=0;i 2 | #include 3 | #include 4 | using namespace std; 5 | int main() 6 | { 7 | long long a[100]={0},b[100]={0},x,y,z,i,j;//x everypast-x-months y produce z months 8 | scanf("%lld%lld%lld",&x,&y,&z); 9 | for(i=1;i<=x;i++) {a[i]=1;b[i]=0;} 10 | for(i=x+1;i<=z+1;i++) 11 | { 12 | b[i]=y*a[i-x]; 13 | a[i]=a[i-1]+b[i-2]; 14 | } 15 | printf("%lld",a[z+1]); 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /1131:基因相关性.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | char ch[100001]; 6 | int main() 7 | { 8 | double n,tot=0; 9 | char s1[501],s2[501]; 10 | scanf("%lf",&n); 11 | scanf("%s%s",s1,s2); 12 | for(int i=0;i=n) printf("yes"); 17 | else printf("no"); 18 | return 0; 19 | } 20 | 21 | -------------------------------------------------------------------------------- /1089:数字反转.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | using namespace std; 4 | int main() 5 | { 6 | long long int n,m,temp; 7 | scanf("%lld",&n); 8 | if(n<0) printf("-"); 9 | if(n==0) printf("0"); 10 | while(n%10==0) 11 | { 12 | n/=10; 13 | continue; 14 | } 15 | while(n!=0) 16 | { 17 | n=abs(n); 18 | temp=abs(n); 19 | temp=n%10; 20 | n/=10; 21 | printf("%lld",temp); 22 | } 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /1144:单词翻转.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | int main() 6 | { 7 | char s[501]; 8 | int t=0,tmp; 9 | int i,j; 10 | gets(s); 11 | s[strlen(s)]=' '; 12 | for(i=0;i 2 | using namespace std; 3 | int main() 4 | { 5 | long long int n,ans=0; 6 | scanf("%lld",&n); 7 | for(int i=1;i<=n;i++){ 8 | int y=1;//1 is true 9 | for(int j=1;j<=i;j++){ 10 | int temp=0,x; 11 | x=i; 12 | temp=x%10; 13 | x/=10; 14 | if(temp==7) y=0; 15 | } 16 | if(y==1||i%7!=0) ans+=i*i; 17 | else printf("%d ",i); 18 | } 19 | printf("%lld",ans); 20 | return 0; 21 | } 22 | -------------------------------------------------------------------------------- /1130:找第一个只出现一次的字符.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | char s[100001]; 9 | int a[127]={0};//ascii 10 | bool b=0; 11 | gets(s); 12 | for(int i=0;i 2 | #include 3 | #include 4 | using namespace std; 5 | int main() 6 | { 7 | long long a[100]={0},b[100]={0},x,y,z,i,j;//x everypast-x-months y produce z months 8 | scanf("%lld%lld%lld",&x,&y,&z); 9 | for(i=1;i<=x;i++) {a[i]=1;b[i]=0;} 10 | for(i=x+1;i<=z+1;i++) 11 | { 12 | b[i]=y*a[i-x]; 13 | a[i]=a[i-1]+b[i-2]; 14 | printf("%lld ",b[i]); 15 | } 16 | printf("%lld",a[z+1]); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /1258:【例9.2】数字金字塔.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int n; 9 | scanf("%d",&n); 10 | int a[n+1][n+1]; 11 | for(int i=1;i<=n;i++) 12 | for(int j=1;j<=i;j++) scanf("%d",&a[i][j]); 13 | for(int i=n-1;i>0;i--) 14 | for(int j=1;j<=i;j++) 15 | { 16 | a[i][j]=max(a[i][j]+a[i+1][j],a[i][j]+a[i+1][j+1]); 17 | } 18 | printf("%d",a[1][1]); 19 | return 0; 20 | } 21 | -------------------------------------------------------------------------------- /1136:密码翻译.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | char a[100]; 6 | int i=0; 7 | while((a[i++]=getchar())!='\n'); 8 | for(int j=0;j=65&&a[j]<=90)||(a[j]>=97&&a[j]<=122)){ 10 | if(a[j]=='z'){ 11 | a[j]='a';a[j]--; 12 | } 13 | if(a[j]=='Z'){ 14 | a[j]='A';a[j]--; 15 | } 16 | a[j]++; 17 | printf("%c",a[j]); 18 | } 19 | else{ 20 | printf("%c",a[j]); 21 | } 22 | } 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /1316:【例4.6】数的计数(Noip2001).cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | int ans=0,f[1001]; 6 | void fun(int m) 7 | { 8 | int i; 9 | if(f[m]!=-1) return; 10 | f[m]=1; 11 | for(i=1;i<=m/2;i++) 12 | { 13 | fun(i); 14 | f[m]+=f[i]; 15 | } 16 | } 17 | int main() 18 | { 19 | int n; 20 | scanf("%d",&n); 21 | for(int i=1;i<=n;i++) f[i]=-1; 22 | for(int i=1;i<=n;i++) fun(i); 23 | printf("%d",f[n]); 24 | return 0; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /1193:吃糖果.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int main() 17 | { 18 | int dp[201],i,j,n; 19 | dp[0]=1;dp[1]=2; 20 | scanf("%d",&n); 21 | for(i=2;i<=n;i++) dp[i]=dp[i-1]+dp[i-2]; 22 | printf("%d",dp[n-1]); 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /1208:2的幂次方表示.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | void fun(int x) 6 | { 7 | int tmp=x; 8 | while(tmp>0) 9 | { 10 | if(tmp==1) 11 | { 12 | printf("2(0)"); 13 | tmp--; 14 | } 15 | else 16 | { 17 | int t=0,i=1; 18 | while(tmp>=i) 19 | { 20 | i*=2; 21 | t++; 22 | } 23 | printf("2(%d)",t-1); 24 | tmp-=(i/2); 25 | if(tmp!=0) printf("+"); 26 | } 27 | } 28 | } 29 | int main() 30 | { 31 | int n; 32 | scanf("%d",&n); 33 | fun(n); 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /1317:【例5.2】组合的输出.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int a[10001]={0},n,r; 7 | bool b[10001]={0}; 8 | int print() 9 | { 10 | for(int i=1;i<=r;i++) 11 | cout<a[k-1]) 19 | { 20 | a[k]=i; 21 | b[i]=1; 22 | if(k==r) print(); 23 | else search(k+1); 24 | b[i]=0; 25 | } 26 | } 27 | int main() 28 | { 29 | cin>>n>>r; 30 | search(1); 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /1208:2的幂次方表示 (再想想).cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | void fun(int x) 6 | { 7 | int tmp=x; 8 | while(tmp>0) 9 | { 10 | if(tmp==1) 11 | { 12 | printf("2(0)"); 13 | tmp--; 14 | } 15 | else 16 | { 17 | int t=0,i=1; 18 | while(tmp>=i) 19 | { 20 | i*=2; 21 | t++; 22 | } 23 | printf("2(%d)",t-1); 24 | tmp-=(i/2); 25 | if(tmp!=0) printf("+"); 26 | } 27 | } 28 | } 29 | int main() 30 | { 31 | int n; 32 | scanf("%d",&n); 33 | fun(n); 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /1320:【例6.2】均分纸牌(Noip2002).cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | using namespace std; 6 | int main() 7 | { 8 | int avg=0,n,a[101],i,tot=0,j; 9 | scanf("%d",&n); 10 | for(i=0;i1) j--; 20 | for(int t=i;t 2 | #include 3 | #include 4 | using namespace std; 5 | char str[10000]; 6 | int main() 7 | { 8 | int top=0; 9 | 10 | gets(str); 11 | int len=strlen(str); 12 | 13 | for(int i=0;i0) 20 | top--; 21 | else 22 | top++; 23 | } 24 | } 25 | if(top==0) 26 | cout<<"YES"< 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int main() 17 | { 18 | int dp[21][21],m,n,i,j; 19 | scanf("%d%d",&m,&n); 20 | for(i=1;i<=20;i++) dp[i][1]=1; 21 | for(j=1;j<=20;j++) dp[1][j]=1; 22 | for(i=2;i<=20;i++) 23 | for(j=2;j<=20;j++) 24 | dp[i][j]=dp[i-1][j]+dp[i][j-1]; 25 | printf("%d",dp[m][n]); 26 | return 0; 27 | } 28 | -------------------------------------------------------------------------------- /1318:【例5.3】自然数的拆分.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | int search(int,int); 6 | int print(int); 7 | int a[1001]={1},n; 8 | int main() 9 | { 10 | scanf("%d",&n); 11 | search(n,1); 12 | return 0; 13 | } 14 | int search(int s,int t) 15 | { 16 | int i; 17 | for(i=a[t-1];i<=s;i++) 18 | { 19 | if(i 2 | #include 3 | #include 4 | #include 5 | #include 6 | using namespace std; 7 | struct be 8 | { 9 | int begin; 10 | int end; 11 | }a[10001]; 12 | bool cmp(be a,be b) 13 | { 14 | return a.end=a[i].begin) continue; 27 | else 28 | { 29 | x=a[i].end; 30 | t++; 31 | } 32 | } 33 | printf("%d",t); 34 | return 0; 35 | } 36 | 37 | -------------------------------------------------------------------------------- /1137:加密的病历单.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | int main() 6 | 7 | { 8 | char a[256],temp; 9 | int len; 10 | int i; 11 | 12 | gets(a); 13 | len=strlen(a); 14 | 15 | for(i=0;i='a'&&a[i]<='z') 18 | { 19 | temp=a[i];temp+=3; 20 | if(temp>122) temp-=26; 21 | temp-=32;a[i]=temp; 22 | 23 | } 24 | else if(a[i]>='A'&&a[i]<='Z') 25 | { 26 | temp=a[i];temp+=3; 27 | if(temp>90) temp-=26; 28 | temp+=32;a[i]=temp; 29 | 30 | } 31 | } 32 | 33 | for(i=len-1;i>=0;i--) 34 | cout< 2 | #include 3 | #include 4 | #include 5 | #include 6 | using namespace std; 7 | struct be 8 | { 9 | int begin; 10 | int end; 11 | }a[1001]; 12 | bool cmp(be a,be b) 13 | { 14 | return a.end=t) 27 | { 28 | t=a[i].end; 29 | tot++; 30 | continue; 31 | } 32 | } 33 | printf("%d",tot); 34 | return 0; 35 | } 36 | 37 | -------------------------------------------------------------------------------- /1149:最长单词2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | int main() 6 | { 7 | char s[2500]; 8 | int k; 9 | int len; 10 | int max_len=0,max_position; 11 | int sum=0; 12 | int i; 13 | 14 | gets(s);//????? 15 | len=strlen(s)-1;//????? 16 | 17 | for(i=0;i<=len;i++) 18 | { 19 | if(s[i]!=' '&&s[i]!='.') sum++;//????????,???? 20 | else if(sum>0) 21 | { 22 | if(sum>max_len)//????????????? 23 | { 24 | max_len=sum;//???????? 25 | max_position=i-sum;//?????????? 26 | } 27 | sum=0;//???? 28 | } 29 | } 30 | for(i=max_position;i<=max_len+max_position-1;i++) 31 | cout< 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int main() 17 | { 18 | int a,b,c,i=0; 19 | while(cin>>a>>b) 20 | { 21 | if(a==0&&b==0) return 0; 22 | if(a 2 | #include 3 | #include 4 | int tmp[10001],a[10001],tot=0; 5 | using namespace std; 6 | void sort(int l,int r) 7 | { 8 | if(l==r) return; 9 | int mid=(l+r)/2; 10 | sort(l,mid); 11 | sort(mid+1,r); 12 | int p=l,i=l,j=mid+1; 13 | while(i<=mid&&j<=r) 14 | { 15 | if(a[i]>a[j]) 16 | { 17 | tot=tot+mid-i+1; 18 | tmp[p++]=a[j++]; 19 | } 20 | else tmp[p++]=a[i++]; 21 | } 22 | while(i<=mid) tmp[p++]=a[i++]; 23 | while(j<=r) tmp[p++]=a[j++]; 24 | for(i=l;i<=r;i++) a[i]=tmp[i]; 25 | } 26 | int main() 27 | { 28 | int n; 29 | scanf("%d",&n); 30 | for(int i=1;i<=n;i++) scanf("%d",&a[i]); 31 | sort(1,n); 32 | printf("%d",tot); 33 | return 0; 34 | } 35 | -------------------------------------------------------------------------------- /1223:An Easy Problem.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int zh(int x) 17 | { 18 | int ans=0; 19 | while(x) 20 | { 21 | if(x%2) ans++; 22 | x/=2; 23 | } 24 | return ans; 25 | } 26 | int main() 27 | { 28 | int n; 29 | while(cin>>n&&n) 30 | { 31 | int tmp=zh(n); 32 | for(int i=n+1;;i++) 33 | { 34 | if(tmp==zh(i)) 35 | { 36 | cout< 2 | #include 3 | int a[100000]; 4 | using namespace std; 5 | void ms(int s,int t) 6 | { 7 | int r[t+5]; 8 | if(s==t) return; 9 | int mid=(s+t)/2; 10 | ms(s,mid); 11 | ms(mid+1,t); 12 | int i=s,j=mid+1,k=s; 13 | while(i<=mid&&j<=t) 14 | { 15 | if(a[i]<=a[j]) 16 | { 17 | r[k]=a[i];k++;i++; 18 | } 19 | else 20 | { 21 | r[k]=a[j];k++;j++; 22 | } 23 | } 24 | while(i<=mid) 25 | { 26 | r[k]=a[i];k++;i++; 27 | } 28 | while(j<=t) 29 | { 30 | r[k]=a[j];k++;j++; 31 | } 32 | for(int i=s;i<=t;i++) a[i]=r[i]; 33 | } 34 | int main() 35 | { 36 | int n; 37 | scanf("%d",&n); 38 | for(int i=0;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | #define N 200 7 | using namespace std; 8 | int main() 9 | { 10 | int a[N]={0}; 11 | int b[N]={0}; 12 | int n; 13 | int maxx; 14 | 15 | int t=0; 16 | while(scanf("%d",&n)!=EOF) 17 | { 18 | a[t]=n; 19 | t++; 20 | } 21 | b[0]=1; 22 | for(int i=1;ib[i]) 27 | b[i]=b[j]+1; 28 | } 29 | maxx=1; 30 | for(int i=0;i 2 | #include 3 | long long ans=0; 4 | int a[100000]; 5 | using namespace std; 6 | void ms(int s,int t) 7 | { 8 | int r[t+5]; 9 | if(s==t) return; 10 | int mid=(s+t)/2; 11 | ms(s,mid); 12 | ms(mid+1,t); 13 | int i=s,j=mid+1,k=s; 14 | while(i<=mid&&j<=t) 15 | { 16 | if(a[i]<=a[j]) 17 | { 18 | r[k]=a[i];k++;i++; 19 | } 20 | else 21 | { 22 | r[k]=a[j];k++;j++; 23 | ans+=mid-i+1; 24 | } 25 | } 26 | while(i<=mid) 27 | { 28 | r[k]=a[i];k++;i++; 29 | } 30 | while(j<=t) 31 | { 32 | r[k]=a[j];k++;j++; 33 | } 34 | for(int i=s;i<=t;i++) a[i]=r[i]; 35 | } 36 | int main() 37 | { 38 | int n; 39 | scanf("%d",&n); 40 | for(int i=0;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | #define N 20 7 | using namespace std; 8 | int main() 9 | { 10 | int t; 11 | char str[260]; 12 | int i,j; 13 | 14 | cin>>str; 15 | cin>>t; 16 | int len=strlen(str); 17 | while(t--) 18 | { 19 | for(i=0;i<=len-2;i++) 20 | if(str[i]>str[i+1]) 21 | { 22 | for(j=i;j<=len-2;j++) 23 | str[j]=str[j+1]; 24 | break; 25 | } 26 | len--; 27 | } 28 | i=0; 29 | while(i<=len-1&&str[i]=='0') 30 | i++; 31 | if(i==len) 32 | cout<<"0"< 2 | #include 3 | #include 4 | using namespace std; 5 | int main() 6 | { 7 | char s[10000]; 8 | int len; 9 | int sum=0,max_len=0,min_len=9999; 10 | int max_position,min_position; 11 | int i; 12 | 13 | gets(s); 14 | len=strlen(s); 15 | s[len]=' '; 16 | 17 | for(i=0;i0) 21 | { 22 | if(sum>max_len) 23 | { 24 | max_len=sum; 25 | max_position=i-sum; 26 | } 27 | if(sum 2 | #include 3 | #include 4 | using namespace std; 5 | struct people{ 6 | int num; 7 | int time; 8 | }arr[5000]; 9 | bool cmp(people a,people b) 10 | { 11 | return a.time>n; 19 | for(i=1;i<=n;i++) 20 | { 21 | cin>>arr[i].time; 22 | arr[i].num=i; 23 | } 24 | sort(arr+1,arr+1+n,cmp); 25 | 26 | for(i=1;i<=n;i++) 27 | { 28 | cout<=1) time_sum+=arr[i].time*(n-i); 30 | } 31 | time_average=time_sum/n; 32 | 33 | cout< 2 | #include 3 | #include 4 | using namespace std; 5 | char a[101]; 6 | int sp,step=0,n; 7 | void print() 8 | { 9 | printf("step%2d:",step); 10 | for(int i=0;i<2*n+2;i++) printf("%c",a[i]); 11 | printf("\n"); 12 | step++; 13 | } 14 | void move(int k) 15 | { 16 | int j; 17 | for(j=0;j<2;j++) 18 | { 19 | a[sp+j]=a[k+j-1]; 20 | a[k+j-1]='-'; 21 | } 22 | sp=k-1; 23 | print(); 24 | } 25 | void mv(int n) 26 | { 27 | int i,k; 28 | if(n==4) 29 | { 30 | move(4);move(8);move(2);move(7);move(1); 31 | } 32 | else 33 | { 34 | move(n);move(n*2-1);mv(n-1); 35 | } 36 | } 37 | int main() 38 | { 39 | int i; 40 | scanf("%d",&n); 41 | for(i=0;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 100010 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | 17 | int top=0; 18 | int main() 19 | { 20 | char queue[N],a[256]; 21 | gets(a); 22 | for(int i=0;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 11 13 | #define MOD 2520 14 | #define E 1e-12 15 | int a[N][N],f[20],pre[N]; 16 | using namespace std; 17 | void print(int x) 18 | { 19 | while(x!=0) 20 | { 21 | cout<>n; 30 | for(int i=1;i<=n;i++) 31 | for(int j=1;j<=n;j++) cin>>a[i][j]; 32 | for(int i=1;i<=n;i++) f[i]=100000; 33 | f[n]=0; 34 | 35 | for(int i=n-1;i>=1;i--) 36 | for(int j=i+1;j<=n;j++) 37 | if(a[i][j]>0&&f[j]!=100000&&f[j]+a[i][j] 2 | #include 3 | #include 4 | using namespace std; 5 | char str[256]; 6 | int stack[256]; 7 | int main() 8 | { 9 | 10 | int top=0; 11 | 12 | gets(str); 13 | int len=strlen(str); 14 | 15 | for(int i=0;i<=len-2;i++) 16 | { 17 | switch(str[i]) 18 | { 19 | case '+':stack[--top]+=stack[top+1];break; 20 | case '-':stack[--top]-=stack[top+1];break; 21 | case '*':stack[--top]*=stack[top+1];break; 22 | case '/':stack[--top]/=stack[top+1];break; 23 | default: 24 | { 25 | int x=0; 26 | while(str[i]!='.') 27 | x=x*10+str[i++]-'0'; 28 | stack[++top]=x; 29 | break; 30 | } 31 | } 32 | } 33 | cout< 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #define INF 999999999 8 | #define N 1001 9 | #define MOD 1000000007 10 | using namespace std; 11 | int a[N][N]; 12 | int main() 13 | { 14 | int m; 15 | int k=1,half=1; 16 | cin>>m; 17 | 18 | int n=1< 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int f[15][15],T,n,m,x,y,vis[15][15],ans=0; 17 | int dir[8][2]={{1,2},{1,-2},{2,1},{2,-1},{-1,2},{-1,-2},{-2,1},{-2,-1}}; 18 | void dfs(int h,int l,int step) 19 | { 20 | for(int i=0;i<8;i++) 21 | { 22 | if(vis[h][l]==0&&h>=0&&h=0&&l 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 201 13 | #define MOD 2520 14 | #define E 1e-12 15 | int r,c,a[N][N]; 16 | int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; 17 | struct node{ 18 | int x,y; 19 | int step; 20 | }q[100010]; 21 | using namespace std; 22 | void bfs() 23 | { 24 | 25 | } 26 | int main() 27 | { 28 | int t; 29 | cin>>t; 30 | while(t--) 31 | { 32 | char c; 33 | memset(a,0,sizeof(a)); 34 | scanf("%d%d",&r,&c); 35 | for(int i=1;i<=r;i++) 36 | for(int j=1;j<=c;j++) 37 | { 38 | scanf("%c",&c); 39 | if(c=='.') a[i][j]=0; 40 | if(c=='#') a[i][j]=1; 41 | if(c=='S') a[i][j]=2; 42 | if(c=='E') a[i][j]=3; 43 | } 44 | for(int i=1;i<=r;i++) 45 | for(int j=1;j<=c;j++); 46 | //if(a[i][j]==2){bfs(i,j);break;} 47 | } 48 | return 0; 49 | } 50 | -------------------------------------------------------------------------------- /1212:LETTERS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #define N 30 6 | using namespace std; 7 | int r,s; 8 | char a[N][N]; 9 | int vis[N][N]; 10 | int num[26]; 11 | int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; 12 | int maxx=0; 13 | void dfs(int x,int y,int step) 14 | { 15 | if(maxx=0&&nx=0&&ny>r>>s; 34 | for(int i=0;i>a[i][j]; 37 | num[a[0][0]-'A']=1; 38 | vis[0][0]=1; 39 | dfs(0,0,1); 40 | cout< 2 | #include 3 | #include 4 | #include 5 | #define N 100 6 | using namespace std; 7 | int ans[N][N],a[N]; 8 | int vis[N][N]; 9 | int tot; 10 | void dfs(int step) 11 | { 12 | if(step==8+1) 13 | { 14 | tot++; 15 | for(int i=1;i<=8;i++) 16 | ans[tot][i]=a[i]; 17 | return; 18 | } 19 | for(int i=1;i<=8;i++) 20 | { 21 | if(vis[0][i]==0&&vis[1][step+i]==0&&vis[2][step-i+8]==0) 22 | { 23 | vis[0][i]=1; 24 | vis[1][i+step]=1; 25 | vis[2][step-i+8]=1; 26 | a[step]=i; 27 | dfs(step+1); 28 | vis[0][i]=0; 29 | vis[1][i+step]=0; 30 | vis[2][step-i+8]=0; 31 | } 32 | } 33 | } 34 | int main() 35 | { 36 | dfs(1); 37 | int n,k[101]; 38 | scanf("%d",&n); 39 | for(int i=0;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | int dir[12][2]={{1,2},{-1,2},{2,1},{-2,1},{-1,-2},{-2,-1},{1,-2},{-1,-2},{2,2},{-2,2},{2,-2},{-2,-2}}; 11 | using namespace std; 12 | int main() 13 | { 14 | int s[101][101],que[10000][4]={0},x1,y1,x2,y2; 15 | memset(s,0xff,sizeof(s)); 16 | int head=1,tail=1; 17 | que[1][1]=1;que[1][2]=1;que[1][3]=0; 18 | cin>>x1>>y1>>x2>>y2; 19 | while(head<=tail) 20 | { 21 | for(int d=0;d<=11;d++) 22 | { 23 | int x=que[head][1]+dir[d][0]; 24 | int y=que[head][2]+dir[d][1]; 25 | if(x>0&&y>0) 26 | if(s[x][y]==-1) 27 | { 28 | s[x][y]=que[head][3]+1; 29 | tail++; 30 | que[tail][1]=x; 31 | que[tail][2]=y; 32 | que[tail][3]=s[x][y]; 33 | if(s[x1][y1]>0&&s[x2][y2]>0) 34 | { 35 | cout< 2 | #include 3 | #include 4 | #include 5 | #define N 1000010 6 | using namespace std; 7 | int main() 8 | { 9 | char a[101],b[101]; 10 | int stack[101]; 11 | int top=0; 12 | while(cin>>a) 13 | { 14 | int len=strlen(a); 15 | for(int i=0;i 2 | #include 3 | #include 4 | #include 5 | #include 6 | using namespace std; 7 | int n; 8 | struct p{ 9 | int begin,end; 10 | }a[50010]; 11 | bool cmp(p a,p b) 12 | { 13 | return a.begin=b.end) return true; 18 | } 19 | void solve() 20 | { 21 | int k=a[1].end,cnt=1; 22 | for(int i=2;i<=n;i++) 23 | { 24 | if(a[i].begin<=k&&a[i].end>=k) 25 | { 26 | k=a[i].end; 27 | cnt++; 28 | } 29 | else 30 | { 31 | if(a[i].end<=k) cnt++; 32 | continue; 33 | } 34 | } 35 | if(cnt==n) cout<>n; 41 | for(int i=1;i<=n;i++) cin>>a[i].begin>>a[i].end; 42 | sort(a+1,a+n+1,cmp); 43 | solve(); 44 | return 0; 45 | } 46 | /* 47 | 1: 48 | 5 49 | 5 6 50 | 1 5 51 | 10 10 52 | 6 9 53 | 8 10 54 | 55 | 1 10 56 | 57 | 2: 58 | 3 59 | 1 1000 60 | 1 6 61 | 1000 2000 62 | 63 | 1 2000 64 | 65 | 3: 66 | 4 67 | 2 3 68 | 4 5 69 | 5 6 70 | 7 8 71 | 72 | no 73 | 74 | */ 75 | -------------------------------------------------------------------------------- /1262:【例9.6】挖地雷.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 210 13 | #define MOD 2520 14 | #define E 1e-12 15 | int w[N],dp[N],pre[N]; 16 | bool a[N][N]={0}; 17 | using namespace std; 18 | void print(int x) 19 | { 20 | if(x!=0) cout<<'-'<>n; 28 | for(int i=1;i<=n;i++) cin>>w[i]; 29 | while(cin>>x>>y) 30 | { 31 | if(x==0&&y==0) break; 32 | a[x][y]=1; 33 | } 34 | for(int i=1;i<=n;i++) dp[i]=-99999; 35 | dp[n]=w[n]; 36 | for(int i=n-1;i>=1;i--) 37 | for(int j=i+1;j<=n;j++) 38 | { 39 | if(a[i][j]&&dp[j]!=-99999&&w[i]+dp[j]>dp[i]) 40 | { 41 | dp[i]=dp[j]+w[i]; 42 | pre[i]=j; 43 | } 44 | } 45 | m=-99999; 46 | for(int i=1;i<=n;i++) 47 | if(m 2 | #include 3 | #include 4 | #include 5 | #define N 100 6 | using namespace std; 7 | int ans[N][N],a[N]; 8 | int vis[N][N]; 9 | int tot; 10 | void dfs(int step) 11 | { 12 | if(step==8+1) 13 | { 14 | tot++; 15 | for(int i=1;i<=8;i++) 16 | ans[tot][i]=a[i]; 17 | return; 18 | } 19 | for(int i=1;i<=8;i++) 20 | { 21 | if(vis[0][i]==0&&vis[1][step+i]==0&&vis[2][step-i+8]==0) 22 | { 23 | vis[0][i]=1; 24 | vis[1][i+step]=1; 25 | vis[2][step-i+8]=1; 26 | a[step]=i; 27 | dfs(step+1); 28 | vis[0][i]=0; 29 | vis[1][i+step]=0; 30 | vis[2][step-i+8]=0; 31 | } 32 | } 33 | } 34 | int main() 35 | { 36 | dfs(1); 37 | for(int t=1;t<=tot;t++) 38 | { 39 | printf("No. %d\n",t); 40 | for(int i=1;i<=8;i++) 41 | { 42 | for(int j=1;j<=8;j++) 43 | { 44 | if(ans[t][j]==i) 45 | cout<<"1 "; 46 | else 47 | cout<<"0 "; 48 | } 49 | cout< 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | struct node 17 | { 18 | int x,y; 19 | }q[1000001]; 20 | int main() 21 | { 22 | int dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,1},{1,1},{1,-1},{-1,-1}}; 23 | char a[150][150]; 24 | int n,m,tot=0; 25 | scanf("%d%d",&n,&m); 26 | for(int i=0;i=0&&nx=0&&ny 2 | #include 3 | #include 4 | #include 5 | #define N 1001 6 | using namespace std; 7 | int m,n; 8 | char ch; 9 | int maps[N][N]; 10 | int vis[N][N]; 11 | int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; 12 | int cnt; 13 | void dfs(int x,int y) 14 | { 15 | for(int i=0;i<4;i++) 16 | { 17 | int nx=x+dir[i][0]; 18 | int ny=y+dir[i][1]; 19 | if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&vis[nx][ny]==0&&maps[nx][ny]==1) 20 | { 21 | vis[nx][ny]=1; 22 | cnt++; 23 | dfs(nx,ny); 24 | } 25 | } 26 | } 27 | int main() 28 | { 29 | while(scanf("%d%d",&m,&n)!=EOF&&m&&n) 30 | { 31 | int x,y; 32 | cnt=1; 33 | memset(vis,0,sizeof(vis)); 34 | memset(maps,0,sizeof(maps)); 35 | 36 | for(int i=1;i<=n;i++) 37 | for(int j=1;j<=m;j++) 38 | { 39 | cin>>ch; 40 | if(ch=='@') 41 | { 42 | x=i; 43 | y=j; 44 | maps[i][j]=1; 45 | } 46 | if(ch=='.') 47 | maps[i][j]=1; 48 | if(ch=='#') 49 | maps[i][j]=0; 50 | } 51 | vis[x][y]=1; 52 | dfs(x,y); 53 | cout< 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #define PI acos(-1.0) 16 | #define E 1e-9 17 | #define INF 0x3f3f3f3f 18 | #define N 300 19 | using namespace std; 20 | int b[N]; 21 | char a[N]; 22 | char c[]={'{','[','(','<','}',']',')','>'}; 23 | stack s; 24 | 25 | using namespace std; 26 | int main() 27 | { 28 | int n; 29 | cin>>n; 30 | while(n--) 31 | { 32 | while(!s.empty()) s.pop(); 33 | bool flag=1; 34 | cin>>a; 35 | int len=strlen(a); 36 | for(int i=0;i=4) 56 | { 57 | if(s.empty()||(s.top()+4)!=b[i]) 58 | { 59 | flag=false; 60 | break; 61 | } 62 | else s.pop(); 63 | } 64 | } 65 | if(!s.empty()) printf("NO\n"); 66 | else if(flag) printf("YES\n"); 67 | else printf("NO\n"); 68 | } 69 | return 0; 70 | } 71 | -------------------------------------------------------------------------------- /1329:【例8.2】细胞.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 1001 13 | #define MOD 2520 14 | #define E 1e-12 15 | int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; 16 | using namespace std; 17 | int n,m; 18 | char g[N][N]; 19 | struct node{ 20 | int x; 21 | int y; 22 | }q[N*1000]; 23 | void bfs(int x0,int y0) 24 | { 25 | int head=1,tail=1; 26 | 27 | q[tail].x=x0; 28 | q[tail].y=y0; 29 | tail++; 30 | 31 | while(head 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int r,c; 17 | char a[N][N]; 18 | bool vis[N][N]; 19 | int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; 20 | struct node 21 | { 22 | int x; 23 | int y; 24 | int step; 25 | }q[N*100]; 26 | void bfs(int sx,int sy,int ex,int ey) 27 | { 28 | int head=1,tail=1; 29 | memset(vis,0,sizeof(vis)); 30 | 31 | vis[sx][sy]=1; 32 | q[tail].x=sx; 33 | q[tail].y=sy; 34 | q[tail].step=1; 35 | tail++; 36 | 37 | while(head=0&&nx=0&&ny 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int n,m; 17 | int a[N][N]; 18 | int b[4]={1,2,4,8}; 19 | bool vis[N][N]; 20 | int sum,maxx; 21 | int dir[4][2]={{0,-1},{-1,0},{0,1},{1,0}}; 22 | struct node 23 | { 24 | int x; 25 | int y; 26 | }q[N*100]; 27 | void bfs(int x0,int y0) 28 | { 29 | int head=1,tail=1; 30 | int cnt=1; 31 | 32 | vis[x0][y0]=1; 33 | q[tail].x=x0; 34 | q[tail].y=y0; 35 | tail++; 36 | 37 | while(head=1&&nx<=n&&ny>=1&&ny<=m&&vis[nx][ny]==0&&(a[x][y]&b[i])==0) 46 | { 47 | cnt++; 48 | vis[nx][ny]=1; 49 | q[tail].x=nx; 50 | q[tail].y=ny; 51 | tail++; 52 | } 53 | } 54 | head++; 55 | } 56 | if(cnt>maxx) 57 | maxx=cnt; 58 | sum++; 59 | } 60 | int main() 61 | { 62 | memset(vis,0,sizeof(vis)); 63 | scanf("%d%d",&n,&m); 64 | for(int i=1;i<=n;i++) 65 | for(int j=1;j<=m;j++) 66 | scanf("%d",&a[i][j]); 67 | 68 | for(int i=1;i<=n;i++) 69 | for(int j=1;j<=m;j++) 70 | if(vis[i][j]==0) 71 | bfs(i,j); 72 | printf("%d\n%d\n",sum,maxx); 73 | return 0; 74 | } 75 | -------------------------------------------------------------------------------- /1251:仙岛求药.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 26 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int r,c; 17 | char a[N][N]; 18 | bool vis[N][N]; 19 | int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; 20 | struct node 21 | { 22 | int x; 23 | int y; 24 | int step; 25 | }q[N*100]; 26 | void bfs(int sx,int sy,int ex,int ey) 27 | { 28 | int head=1,tail=1; 29 | bool flag=true; 30 | memset(vis,0,sizeof(vis)); 31 | 32 | vis[sx][sy]=1; 33 | q[tail].x=sx; 34 | q[tail].y=sy; 35 | q[tail].step=0; 36 | tail++; 37 | 38 | while(head=0&&nx=0&&ny 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #define INF 0x3f3f3f3f 11 | #define PI acos(-1.0) 12 | #define N 101 13 | #define MOD 2520 14 | #define E 1e-12 15 | using namespace std; 16 | int X,Y,Z; 17 | char a[N][N][N]; 18 | bool vis[N][N][N]; 19 | int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}; 20 | struct node 21 | { 22 | int x; 23 | int y; 24 | int z; 25 | int step; 26 | }q[N*10000]; 27 | void bfs(int sx,int sy,int sz,int ex,int ey,int ez) 28 | { 29 | int head=1,tail=1; 30 | bool flag=true; 31 | memset(vis,0,sizeof(vis)); 32 | 33 | vis[sx][sy][sz]=1; 34 | q[tail].x=sx; 35 | q[tail].y=sy; 36 | q[tail].z=sz; 37 | q[tail].step=0; 38 | tail++; 39 | 40 | while(head